0

我编写了一个 WCF 库并将其放在服务器(IIS7)上。我可以通过浏览诸如“foo.com/test.asmx”之类的 URL 访问其文件夹及其内容,其方法可以视为“foo.com/test.asmx/MyMethod”

当我在服务器(服务器的本地)上的同一应用程序中浏览页面并使用 URL“foo.com/test.asmx/MyMethod”向该方法发送请求时,我得到了正确的结果。

但是当我在本地计算机上浏览相同的 html 页面并将相同的请求发送到 URL“foo.com/test.asmx/MyMethod”时,ajax 请求处于错误状态。(除此之外,它在我电脑的本地主机上正常工作)

我想我无法从本地服务器获得方法或结果。

我的ajax调用:

var loginInfo = "{ 'username': '" + encodeURIComponent($("#lUsername").val()) + "', 'password': '" + encodeURIComponent($("#lPassword").val()) + "', 'uuid': 'asd'}";
$.ajax({
                type: "POST",
                //async: false,
                crossDomain: true,
                url: "http://foo.com/test.asmx/MyMethod",
                data: loginInfo,
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                success: function (msg) {                    
                    var myJsonObj = $.parseJSON(msg.d);                    
                    if (myJsonObj.userLoggedIn == 1) {                      
                        insertLoginToDB(myJsonObj.username, myJsonObj.userEmail, myJsonObj.userDeviceUuid);
                        $.mobile.changePage("#homePage", { transition: "none" });
                    }
                    else {
                        alert("Unsuccessful login. Try again.");
                    }                            
                },
                error: function (msg) {
                    alert("Error!");
                }
            });

我该如何解决这个问题?是什么导致了这种错误?

4

1 回答 1

0

我不确定您的客户端应用程序或 html 页面和您的服务是否都驻留在不同的域中,但如果它们确实存在,那么看起来您正在尝试使用 jquery(或纯 javascript)进行跨域发布,下面可能看起来类似于您的问题,通过它或谷歌查看“在 jquery 中的跨域发布”,我想这就是您的核心问题。

jQuery AJAX 跨域

简而言之,如果您尝试的是跨域,那么您需要在进行 jquery ajax 调用时使用 JSONP 数据类型。

于 2013-08-28T11:29:59.350 回答