3

easyXdm ライブラリを使用してクロスドメイン AJAX 投稿を機能させようとしています。

私のローカル開発環境には、次の 2 つのサイトがあります。

1. http://localhost/MySite/ws/easyXDM/cors/index.html (EasyXdm ファイル)
2. http://localhost/MyClientSite/TestPage.html (ここからの AJAX 投稿)

TestPage.html (AJAX ポスト)

var rpc = new easyXDM.Rpc({
        remote: "http://localhost/MySite/ws/easyXDM/cors/index.html"
    },
    {
        remote: {
            request: {}
        }
    });

rpc.request({
        url: "http://localhost/MySite/ws/MyService.asmx/DoSomething",
        method: "POST",
        data: jsonData
    }, function(response) {
        console.log(JSON.parse(response.data));

        $('#thanksDiv').fadeIn(2000, function () {
            $('#thanksDiv').fadeOut(4000);
        });
    });

AJAX の投稿を行うと、ブラウザーのコンソールに次のように表示されます。

easyXDM present on 'http://localhost/MySite/ws/easyXDM/cors/index.html?xdm_e=http%3A%2F%2Flocalhost%2FMyClientSite%2FTestPage.html&xdm_c=default884&xdm_p=4 
native JSON found 
easyXDM.Rpc: constructor 
{Private}: preparing transport stack 
{Private}: using parameters from query 
easyXDM.stack.SameOriginTransport: constructor 
easyXDM.stack.QueueBehavior: constructor 
easyXDM.stack.RpcBehavior: init 
{Private}: firing dom_onReady 
... deferred messages ... 
easyXDM.Rpc: constructor 
{Private}: preparing transport stack 
{Private}: using parameters from query 
easyXDM.stack.SameOriginTransport: constructor 
easyXDM.stack.QueueBehavior: constructor 
easyXDM.stack.RpcBehavior: init 
... end of deferred messages ... 
easyXDM.stack.SameOriginTransport: init 
easyXDM.stack.RpcBehavior: received request to execute method request using callback id 1 
easyXDM.stack.RpcBehavior: requested to execute procedure request 
easyXDM.stack.QueueBehavior: removing myself from the stack 

問題: Web サービスが実際にデータを受信しません。これは、私の AJAX post success 関数が表示thanksDivされ、* データベースにレコードが作成される必要があるため明らかです。

注:クライアントのサイトで Internet Explorer 6 および 7 の問題を解決するために easyXdm を使用する必要があるため、既存の AJAX ポスト コードを置き換えます。

追加情報: 私の easyXdm ファイルが配置されているファイル構造は次のとおりです。

/ws/easyXDM/easyXDM.debug.js
/ws/easyXDM/easyXdm.swf
/ws/easyXDM/json2.js 
/ws/easyXDM/name.html
/ws/easyXDM/cors/index.html
4

1 に答える 1

1

jsonData が easyXdm 経由で正しく送信されなかったため、Web サービスが HTTP 500 サーバー エラーをスローしていました。

投稿前の json データは次のようになります。

{ "param1": "value1", "param2": "value2"...... }

ただし、Web サービスは 1 行に 1 文字のデータを受信して​​いました。

{
"
p
a
r
a
m
"
....

投稿前にjsonデータをシリアル化していませんでした。したがって、元の質問に投稿した元のコードに基づいて:

それを機能させるために、行を変更しました

data: jsonData 

data: JSON.parse(jsonData)
于 2013-03-29T14:38:58.323 に答える