0

我已经使用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;
}
4

4 回答 4

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 服务器设置了正确的内容类型响应标头,则传递给成功方法的参数将由 jQuery 自动解析为基础类型。因此,例如,如果您的服务器设置Content-Type: application/json并写入{"foo":"bar"}响应正文,您可以直接操作此对象:alert(result.foo);在此回调中,无需额外解析。如果您的 Web 服务器脚本写得不好并且没有设置正确的内容类型标头,例如它设置Content-Type: 'text/html'JSON 格式的字符串并将其写入响应正文,您可以使用dataType: 'json'参数强制 jQuery 解析为 JSON。但通常情况下,如果一切都正确,则不需要这样做。

现在,error回调不同了。它xhr作为参数传递对象,因此这次您必须将结果提取为字符串:

error: function(xhr) {
    anotherMethod(xhr.getResponseText());    
}

如果这个字符串代表 JSON,你可以解析它:

error: function(xhr) {
    var result = $.parseJSON(xhr.getResponseText());
    anotherMethod(result);    
}
于 2012-07-07T12:30:47.037 回答
0

您的结果存储在变量resulte

...
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 )代替函数调用来显示它。

于 2012-07-07T12:29:03.207 回答
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
            }
于 2012-07-07T12:29:54.187 回答
0
  success: function (result) 
            {

              alert(result.someobject); //someobject is returned by your JSON
            },
于 2012-07-07T12:30:55.250 回答