【问题标题】:JQuery Ajax call failing but service is hitJQuery Ajax 调用失败但服务被命中
【发布时间】:2012-07-17 23:20:35
【问题描述】:

我不确定如何最好地解释这一点,所以请耐心等待。

我在一些 javascript 中有以下内容(使用 jQuery)

$(document).ready(function(){
    $("#myForm").submit(function(){

       var request = $.ajax({
          url: "myPage.php", //sits on localhost
          crossDomain: true,
          type: "POST",
          data: {
             var1 : "foo",
             var2 : "bar"
          }
        });

     request.done(function(res){
           alert("DONE");
     });

    request.fail(function(jqXHR , textStatus){
           alert(textStatus);
    });      
}

MyPage.php 使用 SoapClient 调用服务。然后返回一些数据。

我可以直接从 webBrowser 调用 MyPage.php 并得到结果(失败,因为没有 POST 数据)。

如果我尝试从 AJAX 调用 MyPage.php 并在我的服务中放置一个断点,我会看到该服务被调用并返回一个值。

但是 request.Fail 总是调用。看起来它只是在服务完成之前直接跳转到那个失败。

我该如何解决这个问题?

【问题讨论】:

  • $.ajax 内置了名为 success:error: 的属性,您可以将它们用于这些目的。我不确定这是否是问题所在,但可以尝试一下。
  • 我的代码中实际上有 ':'。它在另一台没有互联网访问的机器上,所以我必须手动输入这些东西
  • 数据之间有冒号:{}这样吗?
  • 如果它在一台无法访问互联网的机器上,那么你确定你应该使用跨域吗?
  • Apache 服务器位于本地主机上。测试服务(WCF)位于 localhost:XXXX 所以我需要跨域,对吧?

标签: php jquery wcf cross-domain


【解决方案1】:

我可能是错的,但您不是缺少数据和数据映射之间的冒号吗?然后你应该在地图内使用key : value 而不是key = value

【讨论】:

    【解决方案2】:

    你的语法错了,应该是:

    data: {
             var1: "foo",
             var2: "bar"
          }
    

    【讨论】:

    • 正如我刚刚评论的那样,我实际上确实有':' - 仍然没有骰子
    • @PSU_Kardi 您在编辑问题中的语法仍然错误。不能直接复制粘贴真实的代码吗?
    • @jeroen 正如他在评论中所说,它在一台无法访问互联网的机器上。
    • 为了论证,我们假设语法是正确的,因为当我到达断点时,传递给服务的参数会正确显示。
    • @jeroen 哈哈,是的,我知道,但它可能不在网络上,而且他可能没有任何传输方式哈哈,我不太可能知道。 :)
    【解决方案3】:

    我不知道为什么,但显然从 $("#myForm").submit(function(){

    并将其移至函数 SubmitForm(){...}

    然后从

    修复了整个问题。谢谢你的建议....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多