Asp.net mvc $。帖子不起作用,我在firebug中没有得到答案

Asp.net mvc $。帖子不起作用,我在firebug中没有得到答案,asp.net-mvc,jquery,getjson,Asp.net Mvc,Jquery,Getjson,我正在尝试从我的asp.net mvc Web服务接收一些json。 ASP.NET: 当我使用http analyzer发送测试post消息时,我得到: Tue May 01 11:24:59 CEST 2012 ---------------------------------------- POST http://xxx.xxx.xxx.xxx/tracy/chat/getMessagesFromFriend?email=linsy&friendmail=d

我正在尝试从我的asp.net mvc Web服务接收一些json。 ASP.NET:

当我使用http analyzer发送测试post消息时,我得到:

    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");
但我只得到一个空警报,所以有一个错误,但我不知道是哪一个,以及如何解决它。 我希望有人知道如何帮助我


您似乎已经为AJAX请求指定了一个绝对地址:

http://xxx.xxx.xxx.xxx/tracy/chat/getMessagesFromFriend?email=linsy&friendmail=djcarre
由于浏览器内置的限制,您无法发送跨域AJAX请求。这取决于您对远程域的控制级别。

$.post(url、para、successFunction、ErrorFunction)
您忘记将para参数放入函数中。
因此,它不起作用。

是的,正如Darin所提到的,您应该注意源策略,因此您的ajax调用应该位于为您编写javascript的页面提供服务的同一个域和子域上

另一种跟踪方法是: -检查ajax调用是否到达服务器?为此,您可以更新数据库中的某些表,也可以将包含POST数据内容的文件放在本地驱动器上,并作为带有时间戳的文件转储。如果此步骤失败,则意味着您的请求根本没有到达服务器,因此您应该了解这是否是跨站点ajax问题,为此,您需要将文件放在为页面提供服务的同一服务器上,然后使用ASP.NET通过服务器调用实际的服务/页面内容,从而解决此问题

  • 如果之前的检查通过,请确保转储您发送的任何输出,并查看您发送的内容

这应该会有帮助,祝你好运。

经过大量搜索,我发现: 它为我的问题提供了解决办法

因为我的脚本在移动电话上运行,而Web服务在远程服务器上运行,所以我不得不使用jsonp。
谢谢你的帮助

您是仅尝试发布到应用程序域还是发布到其他域?
    error:function(jqXHR, textStatus, errorThrown){
        alert(errorThrown);
    }
http://xxx.xxx.xxx.xxx/tracy/chat/getMessagesFromFriend?email=linsy&friendmail=djcarre