AJAX $ .post没有显示响应数据

时间:2015-08-13 11:50:15

标签: javascript jquery ajax

极客,我在我的AJAX代码中陷入非常讨厌的阶段,实际上我正在使用AJAX jquery post方法对我在本地托管的Web服务做一个简单的POST请求。这里有简单的代码。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){
        $.post("http://127.0.0.1:5000/send",
        {
          name: "swap",
          city: "amt"
        },
        function(data,status){
            alert("Data: " + data + "\nStatus: " + status);
        });
    });
});
</script>

Web服务代码是正确的,当我CURL到我的webservice它返回正确的响应,这意味着它正常工作。上面的代码在一个月前工作正常,但是当我现在尝试运行时,它也没有工作,我在堆栈溢出时检查了一些类似的问题,但他们一直在暗示,不要使用上面的代码使用跨域请求,但我从我的本地PC运行此代码。我还检查了wire-shark中的响应,我可以清楚地看到webservice返回了正确的响应,我不知道为什么,这个回调函数不是由Ajax代码执行来显示响应的。正如您在代码中看到的,我没有使用任何格式,如JSON或XML,它是纯文本,但仍然是问题。

如果任何一个云帮助我解决这个问题,那对我来说真的很有帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的请求失败了吗?

当您在.fail

上拖出post回调时会发生什么?
$("button").click(function(){
    $.post("/send",
    {
      name: "swap",
      city: "amt"
    },
    function(data,status){
        alert("Data: " + data + "\nStatus: " + status);
    })
    .fail(function() { alert('Request failed!'); });
});

如果是,请检查您是否有CORS /混合内容问题

使用您上面链接的代码,必须在127.0.0.1:5000的本地网络服务器上提供包含该JavaScript代码的网页,或者127.0.0.1:5000的网络服务器必须发送回{{ 3}}(例如Access-Control-Allow-Origin: *)在/send请求的响应中。

Access-Control-Allow-Origin标题告诉浏览器哪些域可用于提供发送跨域请求的页面。

无论哪种方式,所有AJAX请求 都必须 来自从网络服务器提供的网页。如果在本地文件系统的浏览器中打开文件,现代浏览器将不允许执行任何XMLHttpRequests(AJAX请求)。

此外,服务于包含问题中代码的页面的网络服务器必须通过HTTP而不是HTTP提供页面,否则浏览器将阻止请求为CORS header

请检查浏览器的控制台,看看是否收到任何错误。 (在FireFox中按 CTRL + K 或在Chromium中按 CTRL + J

分别是FireFox浏览器控制台中的混合内容 CORS 错误。 mixing content