$.ajax statusCode - ajax

I have a problem in my code . This is part of it:
function checkIfAvailable(username){
var url = "/checkAvail?user="+username;
var ans = $.ajax({
url: url,
type: "GET",
context: document.body,
statusCode: {
404: function() {
console.log("-1-1-1-1 WE GOT 404!");
},
200: function() {
console.log("-1-1-1-1 WE GOT 404!");
}
}
});
}
I think the response.status is 200, but I don't enter the '200' part.
So how can I print the response.status I'm getting?

success(data, textStatus, jqXHR){
var statusCode = jqXHR.status;
var statusText = jqXHR.statusText;
}
See jQuery API for more options...

function checkIfAvailable(username) {
var ans = $.ajax({
url: "/checkAvail",
type: "GET",
data: "user=" + username,
dataType: "html",//change it by the data type you get (XML...)
context: document.body,
statusCode: {
404: function() {
console.log("-1-1-1-1 WE GOT 404!");
},
200: function() {
console.log("-1-1-1-1 WE GOT 200!");
}
},
success: function() {
console.log("success");
},
error: function(e) {
alert(e);
}
});
}

Message inside console.log("-1-1-1-1 WE GOT 404!") is same for both 404 and 200. change the message for 200 like console.log("Success.....")

Related

Display all data fetched, api rest using __next

I need to fetch all data from an xml link but I couldn't as it displays only 300 rows, so I found a solution that says I should use __next, I have the code below but it doesn't work, in the console I get the next url but the items (TaskName) of the first page. I want to get the TaskName(s) of the next pages.
window.addEventListener('load',function() {
$.ajax({url: _spPageContextInfo.siteAbsoluteUrl + "/_api/ProjectData/[en-US]/Tasks",
method: "GET",
dataType: "json",
headers: {Accept: "application/json;odata=verbose"},
success: function(data) {
var dataResults = data.d.results;
if (data.d.__next) {
url = data.d.__next;
console.log("url: "+url);
}
$.each(dataResults, function(key, value)
{
var tasky = value.TaskName;
console.log(tasky);
});
}});
});
I found a solution, here the code is:
function GetListItems(){
$.ajax({
url: urly,
method: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function(data){
response = response.concat(data.d.results);
if (data.d.__next) {
urly = data.d.__next;
GetListItems();
}
$.each(response, function(key, value)
{
var tasky = value.TaskName;
console.log(tasky);
});
},
error: function(error){
}
});
}

wrong ajax callback invoked using cordova

In my jqm app I make a POST using jQuery $.ajax sending and receiving json data. Everything is fine in the browser and on iPhone; on Android I noticed that when this server response is like this:
{ "code" : 500,
"errorMsg" : "bla bla bla",
"errors" : null,
"status" : "INTERNAL_SERVER_ERROR",
"success" : false
}
the ajax invokes the "error" callback and not the "success". This happens only on android and only if I include corova-2.0.0. js on the project. Any help?
I'm using cordova-2.0.0 with jqm 1.3.1 and jQuery 1.9.1
Here's my code:
var ajax = $.ajax({
type: "post",
url: url,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: data,
timeout: 30000
});
var success = function (d) {
if(d.success==true && obj.success)
obj.success(d.data);
else
{
var msg = parseErrors(d);
console.log(msg);
//open page passing results
obj.msgBus.fire("RequestResult", {
callback: function(){ obj.msgBus.fire("Welcome");},
success: false,
text: msg
});
}
};
var error = function (xhr, status, e) {
console.log('error ajax url:[' + url + '] status:[' + status + '] error:[' + e + ']');
if (obj.error) {
if ((typeof e == 'string'))
obj.error({
statusText: e,
code: xhr.statusCode,
text: xhr.responseText
});
else {
e = $.extend(e, {
statusText: status
});
obj.error(e);
}
}
};
var complete = function () {
if (obj.complete) {
obj.complete();
}
};
var parseErrors = function(d){
console.log( d);
if(d.errors==null){
return d.errorMsg;
}
else
{
var res="";
for (var i=0;i< d.errors.length;i++){
res+= "{0}: {1} <br/>".format( d.errors[i].field, d.errors[i].errorMsg);
}
return res;
}
};
ajax.success(success).error(error).complete(complete);
where data is an object like this:
{
"date" : 1371679200000,
"idBeach" : "1",
"idStuff" : 3,
"idUser" : "8",
"numStuff" : 1
}
Try this, it works for me
$.ajax({
async: false,
type: "POST",
url: "Your_URL",
dataType: "json",
success: function (data, textStatus, jqXHR) {
$.each(data, function (i, object) {
alert(obj.Data);
});
},
error: function () {
alert("There was an error loading the feed");
}
});

Jquery Annotate / PHP error by sending the object value

Send var annotation_id:
echo $json = json_encode(array('annotation_id'=>$save[0]));
Get var annotation_id:
if (image.useAjax) {
$.ajax({
url: image.saveUrl,
data: form.serialize(),
error: function(e) {
alert("An error occured saving that note.");
},
success: function(data) {
if (data.annotation_id != undefined) {
editable.note.id = data.annotation_id;
alert(editable.note.id);
}
},
dataType: "json"
});
}
So...what's wrong with my code ?
Not getting the value of this variable.

Can't extend Ext.Ajax.request

I created class which extends Ext.Ajax.request but I can run it. I always get error message:
TypeError: me.fireEvent is not a function
if (me.fireEvent('beforerequest', me, options) !== false) {
Ext.define('MY.classes.GetItem', {
extend: 'Ext.Ajax.request',
url: 'getItems.php',
method : 'GET',
timeout: 30000,
success: function (response, opts){
alert('email sent succ!');
},
failure: function (response, opts){
alert('email request fail! ' + response.status);
//var jsonResp = Ext.util.JSON.decode(response.responseText)
//Ext.Msg.alert("Error",jsonResp.error);
},
// headers: {'Content-Type': 'application/json'},
// jsonData: {"emailId" : "admin#psiloc.com" },
params: {
To: "arek#ooo.com",
Subject: 'temat',
Text: 'wiasomosc'
}
});
I call it:
var p = {id: itemId};
var req = Ext.create('MY.classes.GetItem');
req.request( {params : p} );
Is it possible to call request by extended class at all?
I cannot make it work.
That's because you're extending a function, not a class.
The class is Ext.Ajax
You can't extend this either
Ext.define('...', {
extend: 'Ext.window.Window.show',
});
You could do something like this (NOTE: I haven't tested this so might have bugs):
Ext.define('MY.classes.GetItem', {
url: 'getItems.php',
method: 'GET',
timeout: 30000,
constructor: function() {
var me = this;
Ext.apply(me, config);
me.callParent();
},
success: function(response, opts) {
alert('email sent succ!');
},
failure: function(response, opts) {
alert('email request fail! ' + response.status);
},
params: {
To: "arek#ooo.com",
Subject: 'temat',
Text: 'wiasomosc'
},
request: function() {
var me = this;
Ext.Ajax.request({
success: me.success,
failure: me.failure,
url: me.url,
method: me.method,
params: me.params
});
}
});​
And call your class like this following:
var myClass = Ext.create('MY.classes.GetItem', {
params: {
p: 'my parameter'
}
});
​myClass.request();​

asp.net mvc 3 json does not work

This is my jquery with json
$('#btnVerificationOk').click(function () {
var verId = $('#trans_verification_id').val();
var verCode = $('#trans_verification_code').val();
$.ajax({
url: '/Profile/CompleteTransactions',
type: 'POST',
data: { },
dataType: 'json',
success: function (result) {
alert(result);
},
error: function () {
alert('ERROR ERROR !!!!!!!!!!!!');
}
});
});
And My C# method:
[Authorize]
[HttpPost]
private JsonResult CompleteTransactions()
{
return Json("Done");
}
Its always alerts 'ERROR ERROR !!!!!!!!!!!!' i tried debugging but CompleteTransactions method is not firing
And this is my second json which is bellow and works good
$('#btnTransfareOk').click(function () {
var userName = $('#transfare_username').val();
var amount = $('#transfare_amount').val();
if (userName == '' || amount == '') {
$('#transfare_error_list').html('Please fill boxes.');
} else {
$.ajax({
url: '/Profile/TranfareMoney',
type: 'POST',
data: { ToUsername: userName, Amount: amount },
dataType: 'json',
success: function (result) {
$('#transfare_error_list').html(result.text);
$('#trans_verification_id').val(result.id);
$('#transfare_username').val("");
$('#transfare_amount').val("");
},
error: function () {
$('#transfare_error_list').html('Oops... Error.');
}
});
}
});
I'm not 100% sure, but shouldn't you controller action handler be public ?

Resources