我已经使用jquery ajax从服务器获取值。当方法进入ajax成功或错误时,我需要返回值。如何做到这一点。请指导我。
$.ajax({
cache: false,
async: true,
type: "GET",
timeout:6000,
dataType: "json",
url:url +"log",
data: { ContactEmail : $("#username").val()},
contentType: "application/json;charset=utf-8",
success: function (result)
{
//Here I need to return the result and should get in another method
},
Error: function (e)
{
//Here I need to return the result and should get in another method
}
});
更新
例如 当我调用 checkNetConnection()时,返回值。我需要这样
function checkNetConnection()
{
var netresult=0;
var networkState = navigator.network.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
if(states[networkState]=='Ethernet connection'||states[networkState]=='WiFi connection' || states[networkState]=='Cell 2G connection' || states[networkState]=='Cell 3G connection' || states[networkState]=='Cell 4G connection')
{
netresult=1;
}
else
{
netresult=0;
}
return netresult;
}
答案 0 :(得分:5)
您的代码存在一些问题。您已指定contentType: "application/json;charset=utf-8"
但未发送JSON请求。如果要发送JSON请求,请在数据上使用JSON.stringify
方法:
data: JSON.stringify({ ContactEmail : $("#username").val() }),
如果没有,请删除此contentType,否则服务器不明确。您的代码的另一个问题是错误回调称为error
,而不是Error
。就获取结果而言,在成功回调中,它们将直接作为参数传递:
success: function (result) {
// Here I need to return the result and should get in another method
anotherMethod(result);
},
还应该注意,如果您的Web服务器设置了正确的内容类型响应头,则传递给success方法的参数将自动由jQuery解析为基础类型。因此,例如,如果您的服务器设置Content-Type: application/json
并将{"foo":"bar"}
写入响应正文,则可以在此回调中直接操作此对象:alert(result.foo);
,而无需额外解析。如果您的Web服务器脚本写得不好并且未设置正确的内容类型标头,例如它设置Content-Type: 'text/html'
并将JSON格式的字符串写入响应正文,则可以强制jQuery解析为JSON使用dataType: 'json'
参数。但通常情况下,如果一切正确,你就不需要这样做。
现在,error
回调是不同的。它作为参数传递xhr
对象,因此您必须在此次将结果提取为字符串:
error: function(xhr) {
anotherMethod(xhr.getResponseText());
}
如果此字符串代表JSON,您可以解析它:
error: function(xhr) {
var result = $.parseJSON(xhr.getResponseText());
anotherMethod(result);
}
答案 1 :(得分:0)
您的结果存储在变量result
和e
中:
...
success: function (result)
{
// result contains the results
foo( results );
},
Error: function (e)
{
// e contains the error
bar( e );
}
...
// Function to do something with the returned results
function foo( someData ) {
// do stuff
}
// Function to do something with the error
function bar( someErrorData ) {
// do stuff
}
快速查看数据的方法是使用alert alert( results )
或alert( e )
而不是函数调用来显示数据。
答案 2 :(得分:0)
在成功方法result
中是一个json对象,其中包含您从服务器发送的数据。
使用console.log(result)
查看数据。
success: function (result)
{
console.log(result);
},
Error: function (e)
{
//Here I need to return the result and should get in another method
}
答案 3 :(得分:0)
success: function (result)
{
alert(result.someobject); //someobject is returned by your JSON
},