如何返回Jquery ajax调用值?

时间:2012-02-21 10:35:11

标签: jquery ajax call

如何在调用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的值。如果是错的,请告诉我正确的方法。

3 个答案:

答案 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;
    }
});