如何在调用jquery ajax的函数中返回值。我接近以下方法,我不知道它是否正确
function a(){
var a=ajaxFunction();
}
$.ajax({
url: "Handler.ashx",
cache: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
_testId = data.Id;
}
return _testId
});
但是在var a中,值未定义。使用上述方法不返回_testId的值。如果是错的,请告诉我正确的方法。
答案 0 :(得分:1)
您需要使用回调函数,因为“Ajax”中的A代表“异步”。
$.ajax({
'url': 'Handler.ashx',
'cache': false,
'contentType': 'application/json; charset=utf-8',
'dataType': 'json',
'success': callback
);
function callback(data) {
var testID = data.id;
console.log(testID);
}
你也可以使用匿名函数来内联它:
$.ajax({
'url': 'Handler.ashx',
'cache': false,
'contentType': 'application/json; charset=utf-8',
'dataType': 'json',
'success': function(data) {
var testID = data.id;
console.log(testID);
}
);
所有依赖于Ajax结果的代码都应该在回调中处理。
答案 1 :(得分:0)
因为AJAX调用是异步运行的,所以return
语句将在调用完成之前被命中,因此返回的值总是未定义的。
您需要更改逻辑以仅在成功处理程序中处理AJAX调用的结果:
$.ajax({
url: "Handler.ashx",
cache: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
_testId = data.Id;
// do whatever you need with _testId in here.
// You can pass it to another function if you require to modularise your logic, eg.
processResult(data)
}
});
function processResult(json) {
// do stuff with your json here
}
答案 2 :(得分:0)
我可能会这样做:
var _testID = false;
function a(){
ajaxFunction();
if(_testID)
{
//Do what you need here
}
}
$.ajax({
url: "Handler.ashx",
cache: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
_testId = data.Id;
}
});