Firefox Ajax jquery调用错误

时间:2009-06-22 11:31:17

标签: jquery ajax web-services firefox

我正在开发一个应用程序,但我遇到了问题,无法在Firefox中使用它。该应用程序接收来自教育应用程序(在共享窗口中显示的网站)的javascript调用,并且它应该从.net webservice返回值。必须在接收呼叫的同一函数中返回值。 webservices返回值是字符串,可以是true,false或有时是数据库中的值。 web服务支持ajax。

由于我不确切知道如何使用javascript调用webservice,我使用的是jquery-1.3.2。

下面的代码可以在Internet Explorer上运行,但是在Firefox上使用它就像它不会等待调用返回值,尽管async:fale。

function API_LMSInitialize(param)
{
  res="true";
  $.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "../../../GateWay/WebService.asmx/LMSInitialize",
    data: "{'courseid':'"+courseid+"','userid':'"+userid+"'}",
    dataType: "json",
    async: false,
    success: function(msg) { res = msg; },
    error: function(){ res="false"; }
  });

  return res;
}

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

您最好的选择是不要使用asynch:false,因为这会挂起浏览器,如果由于任何原因ajax调用失败,用户将不得不关闭浏览器窗口。您最好的选择是将回调函数传递给您现有的API_LMSInitialize函数 呼吁ajax电话成功。您还必须重新处理一些调用代码并将其移至回调函数中。

e.g

API_LMSInitialize( 'someParam', callbackFn);


function API_LMSInitialize(param, callback)
{

  $.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "../../../GateWay/WebService.asmx/LMSInitialize",
    data: "{'courseid':'"+courseid+"','userid':'"+userid+"'}",
    dataType: "json",
    async: false,
    success: function(msg) { callbackFn(msg) },
    error: function(){ res="false"; }
  });

}

function callbackFn(msg){

     //do something with the returned data
}

答案 1 :(得分:0)

可能ajax调用失败并通过错误回调退出。您可以添加警报来验证这一点,甚至可以更好地使用Firebug和console.log。

使用IE成功调用并使用Firefox失败的原因可能与返回的JSON数据有关。您确定Firefox可以正确解析这些数据吗? Firebug也可以为此提供帮助。

最后,使用同步模式并不是一个好习惯。最好修改代码以异步工作。

答案 2 :(得分:0)

如果尚未设置Web服务,则将其配置为IIS中的Web应用程序。

答案 3 :(得分:0)

dataType:“html”解决了我的问题。

相关问题