2011-04-07 100 views
2

我正在构建一款针对移动设备(特别是iPhone和Android)的Web应用程序。我使用ASP.NET MVC和JQuery构建它。在一页上我有一个级联下拉菜单。我已经为第一个下拉菜单的change事件连接了一个函数,并且执行了AJAX调用,并使用JSON响应来填充第二个下拉菜单。这一切都可以在我的桌面上正常工作,但不适用于iPhone或Android手机。第二个下拉列表未填充。我在更改函数中放置了一个“警告”,并验证事件正在被触发。然后,我在AJAX调用的回调函数中放置了“alert”,但它没有被执行,所以AJAX调用没有打到服务器,或者电话没有收到响应。Jquery ajax发布不支持iPhone和Android

jQuery的代码是:

$(function() { 
    $("#ProgramId").change(function() { 
     var programId = $("#ProgramId").attr("value"); 
     alert("Change event triggered"); // <- test only, does get executed when client is a phone bowser 
     var termId = $("#TermId").attr("value"); 
     $.post("/DealerHome/Terms", { "ProgramId": programId }, 
      function (data) { 
       alert("Ajax response received"); // <- test only, does NOT get executed when client is a phone bowser 
       $("#TermId").children().remove(); 
       $("#TermId").append('<option value="0">--select--</option>'); 
       $.each(data, function() { 
        if (termId == this.Value) { 
         $("#TermId").append('<option value="' + this.Value + '" selected >' + this.Text + '</option>'); 
        } else { 
         $("#TermId").append('<option value="' + this.Value + '" >' + this.Text + '</option>'); 
        } 
       }); 
      }); 
    }); 
}); 

我已经打开iPhone上的JavaScript控制台,但它并没有显示出任何错误。作为移动设备开发的新手,我不知道该如何调试。在桌面上,我只是使用Fiddler来查看电线上发生了什么。任何帮助都非常感谢。

干杯

克雷格

+0

只是继续到上面,我已经确认服务器正在接收来自移动设备的ajax调用,并且正在返回JSON响应,所以它似乎是移动设备未处理响应的问题。 – Craig 2011-04-08 01:40:58

回答

5

我已经解决了这个问题,我只是张贴在其他情况下遇到了同样的问题。这归结于我做我讨厌的事情,那是硬编码的字符串。在这种情况下,违规行是hte post函数中的AJAX url。它被硬编码到网站的根目录,但是当被部署时(这是我在移动设备上测试它的方式),路径改变了。

SO纠正这一点,我已经更换后线以上:

$.post('@Url.Content("~/DealerHome/Terms")' , { "ProgramId": programId }, 

Url.Content确保正确的相对路径用于链接。