Ajax Post请求总是运行错误函数,虽然curl到同一个url工作正常

时间:2016-02-16 03:43:02

标签: javascript jquery json ajax curl

我正在使用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中,它工作正常,并按预期返回结果。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

当我使用Firefox firebug调试问题时,我开始了解错误的详细信息:

阻止跨源请求:同源策略禁止在http://localhost:8000/queries.json/读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。

看起来我需要在客户端和服务器上启用CORS。这样可以解决问题。

感谢SLaks指出我正确的方向。