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 要求がエラー状態になります。(それに加えて、私のコンピューターのlocalhostで正しく動作します)

メソッドに到達できないか、ローカル サーバーから結果を取得できないと思います。

私の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 に答える