2012-05-01 2 views
0

Я пытаюсь получить некоторый json из моего asp.net mvc webservice. 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. Мой 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 нормально, но ответ остается пустым. Я также попытался с $ .ajax и

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

Но я только получаю пустой предупреждение, так что есть ошибка, но я понятия не имею, какой из них и как ее решить. Надеюсь, кто-то знает, как мне помочь.

Сердечных приветы

+0

Вы пытаетесь отправить сообщение в свой домен приложения или в другой? –

ответ

1

Вы, кажется, определили абсолютный адрес для вашего запроса AJAX:

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

Благодаря same origin policy ограничения, встроенной в браузеры вы не можете отправить междоменный AJAX запросов. В зависимости от уровня контроля над удаленным доменом существует couple of workarounds.

0

$ .post (url, para, successFunction, ErrorFunction);
вы забыли включить пара-параметр в функцию. поэтому не работает.

0

Да, как упоминалось Дарином, вы должны позаботиться о политике происхождения, и поэтому ваш вызов ajax должен быть в том же домене и поддомене, из которого вы обслуживаете страницу, на которой у вас написан ваш javascript.

Другой способ отслеживания: - Проверьте, достигает ли ваш вызов ajax к серверу или нет? Для этого вы можете либо обновить некоторую таблицу в db, либо просто поместить файл с содержимым данных POST на свой локальный диск, а дамп - как файл с меткой времени. Если этот шаг не удался, это означает, что ваш запрос не доходит до сервера вообще, и поэтому вы должны увидеть, является ли это проблемой межсайтового ajax, и для этого вам нужно исправить это, поместив файл на тот же сервер, с которого вы обслуживая вашу страницу, а затем вызывая фактическое обслуживание/содержимое страницы через ваш сервер с помощью ASP.NET.

  • Также убедитесь, что вы выгружаете свой вывод независимо от того, что вы отправляете, если предыдущая проверка проходит и видит, что вы отправляете.

Это должно помочь, удачи.

0

После многого поиска я нашел это: Ajax json post to Controller across domains, "not allowed by" Access-Control-Allow-Headers Это обеспечило решение моей проблемы.

Поскольку мой сценарий работал на мобильном телефоне и веб-сервисе на удаленном сервере, мне пришлось использовать jsonp. Спасибо за помощь!

Смежные вопросы