2012-05-01 2 views
0

asp.net mvc webservice에서 json을 받으려고합니다. ASP.NET :

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

내가 HTTP 분석기 테스트 후 메시지를 보내 내가 얻을 :

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을 반환합니다. 내 자바 스크립트 코드는 다음과 같습니다

$.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); 
    } 

과 노력하지만 난 단지 빈 경고를 얻을, 그래서 오류가 있습니다,하지만 난 아무 생각 하나 그 해결 방법이 없습니다. 누군가 나를 도울 줄 알았 으면합니다. 때문에 당신이 도메인 간 AJAX 요청을 보낼 수 없습니다 브라우저에 내장 년대 same origin policy 제한에

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

:

종류는

+0

응용 프로그램 도메인에만 게시하거나 다른 게시 도메인에 게시하려고합니까? –

답변

1

당신은 당신의 AJAX 요청에 절대 주소를 지정하는 것 간주한다. 원격 도메인에 대한 제어 수준에 따라 couple of workarounds이 있습니다.

0

$. post (url, para, successFunction, ErrorFunction);
para 매개 변수를 함수에 넣는 것을 잊었습니다. 그래서 작동하지 않습니다.

0

예 Darin이 언급 한 것처럼 원산지 정책을 준수해야하며 따라서 아약스 호출은 자바 스크립트가 작성된 페이지를 제공하는 동일한 도메인 및 하위 도메인에 있어야합니다.

추적 할 또 다른 방법은 다음과 같습니다. - 아약스 호출이 서버에 도달했는지 여부를 확인하십시오. 이를 위해 db의 일부 테이블을 업데이트하거나 로컬 드라이브에 POST 데이터 내용이있는 파일을 넣고 타임 스탬프가있는 파일로 덤프 할 수 있습니다. 이 단계가 실패하면 요청이 서버에 전혀 도달하지 못해서 사이트 간 아약스 문제인지 여부를 확인해야합니다. 즉, 귀하가있는 서버와 동일한 서버에 파일을 저장하여 문제를 해결해야합니다. 페이지를 제공 한 다음 ASP.NET을 사용하여 서버를 통해 실제 서비스/페이지 콘텐츠를 호출합니다.

  • 이전 수표가 통과되면 보내시는 내용을 출력하고 보내시는 내용을 확인하십시오.

도움이됩니다. 행운을 빈다.

관련 문제