2012-05-01 7 views
0

私のasp.net mvc webserviceからjsonを受け取ろうとしています。 ASP.NET:私は、HTTPアナライザでテストポストメッセージを送信すると

public JsonResult getMessagesFromFriend(string email, string friendmail) { 
     DataLayer.Repository.Classes.DataLayer dl = DataLayer.Repository.Classes.DataLayer.Instance; 
     return Json(dl.getMessagesFromFriend(email, friendmail); 
    } 

私が手:

Tue May 01 11:24:59 CEST 2012 
    ---------------------------------------- 
    POST http://xxx.xxx.xxx.xxx/tracy/chat/getMessagesFromFriend?email=linsy&friendmail=djcarre 
    HTTP/1.1 200 OK 
    Cache-Control: private 
    Content-Type: application/json; charset=utf-8 
    Server: Microsoft-IIS/7.5 
    X-AspNetMvc-Version: 4.0 
    X-AspNet-Version: 4.0.30319 
    X-Powered-By: ASP.NET 
    Date: Tue, 01 May 2012 09:25:04 GMT 
    Content-Length: 309 

    ---------------------------------------- 
    ---------------------------------------- 
    [{"sender":"viagsm","receiver":"djcarre","datetime":"28/04/2012 16:55:33","message":"msg1"},{"sender":"viagsm ","receiver":"djcarre","datetime":"28/04/2012 16:55:59","message":"msg2"},{"sender":"Philippe C","receiver":"linsy","datetime":"28/04/2012 16:56:10","message":"test3"}] 
    ---------------------------------------- 

だから、それは私のJSONを返すです。 私のjavascriptのコードは次のようになります。

$.post("http://xxx.xxx.xxx.xxx/tracy/chat/getMessagesFromFriend?email=linsy&friendmail=djcarre", function(data) { 
    if (data.length > 0) { 
        for (x in data) { 
         $("#chatarea").html(
         $("#chatarea").html() + 
         "<p><b>" + 
         data[x].sender + "</b>" + 
         " (" + data[x].datetime.match(/(\d+:\d+:\d+)/)[1] + ") : " + 
         data[x].message + "</p>"); 
        } 
       } 
    }, "json"); 

}

私は放火犯で見ると、ポストが送信され、私は200 OKを得るが、答えは空のままです。 私はまた、$アヤックスと

error:function(jqXHR, textStatus, errorThrown){ 
     alert(errorThrown); 
    } 

で試してみました。しかし、私は唯一の空のアラートを取得するので、そこに誤差があるが、私は1見当がつかないとどのようにそれを解決するために。 誰かが私を助ける方法を知っていれば幸いです。原因あなたは、クロスドメインAJAX要求を送信できないブラウザに組み込まれているsame origin policy制限に

http://xxx.xxx.xxx.xxx/tracy/chat/getMessagesFromFriend?email=linsy&friendmail=djcarre 

種類は、あなたがあなたのAJAXリクエストのための絶対アドレスを指定しているように見える

+0

あなたのアプリケーションドメインにのみ、または別のドメインに投稿しようとしていますか? –

答えて

1

について。リモートドメイン上の制御レベルに応じて、couple of workaroundsがあります。

0

$ .post(url、para、successFunction、ErrorFunction);
paraパラメーターを関数に入れるのを忘れています。 これは動作しません。

0

はい、Darinが述べたように、発信元ポリシーを守って、あなたのajax呼び出しは、あなたのjavascriptが書かれているページを提供しているのと同じドメインとサブドメイン上になければなりません。

トレースする別の方法は次のとおりです。 - あなたのajaxコールがサーバーに到達しているかどうかを確認しますか?そのためには、db内のテーブルを更新するか、ローカルドライブ上にPOSTデータコンテンツを含むファイルを配置し、タイムスタンプ付きのファイルとしてダンプしてください。この手順が失敗した場合は、リクエストがサーバーに到達していないことを意味します。そのため、サイト間Ajaxの問題があるかどうかを確認する必要があります。そのためには、サーバーと同じサーバーにファイルを置く必要がありますページを提供し、ASP.NETを使用してサーバー経由で実際のサービス/ページコンテンツを呼び出します。

  • また、前回のチェックに合格した場合は送信しているものをダンプして送信してください。

これは、幸運を助けるはずです。

関連する問題