2011-06-15 157 views
0

以下调用在Chrome中完美适用,但在其他任何浏览器中均失败。

function getInfo(r,c,f){ 
    return $.parseJSON($.ajax({ 
     url: baseURL + 'somethingAPI/getInfo', 
     data: { 
     "data_r": r, 
     "data_c": c, 
     "data_f": f 
     }, 
     //success: function(data){}, 
     dataType: "json", 
     async: FALSE 
    }).response); 
} 

是的,我使用的是同步的Ajax调用,我相信,因为我不希望任何其他JS来没有这个执行和返回数据运行是必要的。虽然,我不完全确定成功回调是否应该发生其他事情。

无论如何,在Chrome中,我得到响应对象(JSON)并且可以很好地访问数据。

有谁知道我在做什么错?

+0

你是否在任何地方使用'console'对象,比如'console.log'或其他东西? – Anurag 2011-06-15 04:37:54

+2

将'FALSE'更改为'false' – 2011-06-15 04:43:54

+0

@Auurag完全不使用控制台 – Erik 2011-06-17 03:47:09

回答

1

关于你不知道如何避免async: false的观点,这就像你想要完成的事情吗?

function getInfo(r, c, f, callback) { 
    $.ajax({ 
    url: baseURL + 'somethingAPI/getInfo', 
    data: { 
     "data_r": r, 
     "data_c": c, 
     "data_f": f 
    }, 
    dataType: "json", 
    success: callback, 
    }); 
} 

getInfo('foo', 'bar', 'baz', function(response) { 
    console.log(response); 
}); 
+0

谢谢!这正是我试图找出如何去做的。 – Erik 2011-06-17 04:23:09

0

不是parsingJson关于ajax查询,这里是我用来克服这些挑战

$.ajax({ 
     url: "pagegoeshere.php",     
     timeout: 30000, 
     type: "POST", 
     data: 'data1='+data1+'&data2='+data2, 
     dataType: 'json', 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("An error has occurred making the request: " + errorThrown) 
     }, 
     success: function(returnjson){                         
      var returnstuff = returnjson.returnstuff; 
      //Do next Javascript step here 
     } 
}); 

您可以运行的成功,随后在成功的JavaScript/jQuery和“栈”事件共同的语法你的Ajax调用。这样,如果它有效,它就会继续。否则,错误处理可能以您定义的方式在提供的错误部分中发生。我通常在一个点击处理程序上激发我的ajax调用,但它确实可以像你所选择的那样在一个函数中运行它。一定要检查你的返回JSON(例如可以从你的处理页面邮寄),以确保它是有效的JSON。 Jsonlint是你的朋友!

我有铬有效地解析错误的HTML和JSON,而其他浏览器几次没有。我怀疑这是专门导致问题的原因。

相关问题