我正在使用ajax的post方法从服务器获取json结果。但是当我单击HTML页面上的按钮时,ajax函数总是运行错误函数,即它始终显示警告说"错误"。我在这里粘贴我的HTML正文以供审核。
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Form</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div id="main">
<div id="header">
</div>
<div id="form">
<table style="display:inline-block">
<tr>
<td>Select a user:</td>
<td>
<select id="SelectUser" style="width:150px">
<option>User 1</option>
<option>User 2</option>
<option>User 3</option>
<option>User 4</option>
<option>User 5</option>
<option>User 6</option>
<option>User 7</option>
<option>User 8</option>
<option>User 9</option>
<option>User 10</option>
</select>
</td>
</tr>
<tr>
<td>Action:</td>
<td>
<select id="SelectAction" style="width:150px">
<option>Buy</option>
<option>Sell
<option>
</select>
</td>
</tr>
<tr>
<td>Quantity:</td>
<td><input id="txtQty" type="text" /></td>
</tr>
<tr>
<td colspan="2" style="text-align:right">
<input id="btnClear" type="button" value="Clear" style="width:100px" onclick="alert('Clear')" />
<input id="btnTrade" type="button" value="Trade" style="width:100px" onclick="getTrade()" />
</td>
</tr>
</table>
<div id="data">
<b>Recommendations</b>
<hr />
</div>
</div>
</div>
<script>
function getTrade() {
$.ajax({
type: "POST",
url: "http://localhost:8000/queries.json/",
data: {user: "1", num: 4},
success: function (resultData) {
alert("resultData");
},
error: function (xhr,thrownError){
alert("error");
}
});
}
</script>
</body>
</html>
当我运行curl请求时(curl -H&#34; Content-Type:application / json&#34; \ -d&#39; {&#34;用户&#34;:&#34; 1&#34;,&#34; num&#34;:4}&#39; http://localhost:8000/queries.json)在我的git shell中,它工作正常,并按预期返回结果。
有什么想法吗?
答案 0 :(得分:0)
当我使用Firefox firebug调试问题时,我开始了解错误的详细信息:
阻止跨源请求:同源策略禁止在http://localhost:8000/queries.json/读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。
看起来我需要在客户端和服务器上启用CORS。这样可以解决问题。
感谢SLaks指出我正确的方向。