极客,我在我的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,它是纯文本,但仍然是问题。
如果任何一个云帮助我解决这个问题,那对我来说真的很有帮助。
谢谢。
答案 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!'); });
});
使用您上面链接的代码,必须在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