JQUERY,AJAX,POST方法错误

时间:2014-05-28 21:08:12

标签: jquery ajax rest post

我正在尝试使用方法post使用以下代码片段进行JQUERY ajax调用, 但是呼叫不是服务器和接收错误。没有'访问控制 - 允许 - 来源'标头出现在请求的资源上。

我们根据各个帖子中的建议在服务器端代码中添加了这些标头。那里没有运气。 我也在clinet方面添加了标题。 我正在尝试从我的本地机器到开发环境中的服务器。 get的另一个请求工作正常,我只有帖子的问题。 我为数据尝试了JSON.stringify,但没有运气。

 $.ajax({
    url: ttsCreateURL,
    type: "POST",
    dataType: 'json',

    crossDomain: true,
    data: { "ballotId" : "0" ,"conMonth": "JUN2014","empId":"9999","airlineCode":"AA", "createdDate":"" },

    success: function(response){            
               alert(response);

    },
    error:function(xhr, ajaxOptions, thrownError){
        //ajaxError("There was an error .  Please try again.",xhr, ajaxOptions, thrownError);
         $('#Main').load('error.html');
    }   
  });

当我尝试在浏览器中查看url以及查询字符串参数时,我看到错误415:不支持的媒体类型 错误。

2 个答案:

答案 0 :(得分:0)

更改dataType =“jsonp”并在服务器端使用回调。

答案 1 :(得分:0)

如果你真的想使用CORS而不是JSONP,这里有一些关于跨源请求故障排除的提示:

  1. 显然Access-Control-Allow-Origin丢失了。确保您的服务器始终设置正确的响应标头。使用本地webproxy可以确定这一点。在Windows上我使用Fiddler。在Linux上,我认为Wireshark有效。
  2. 在客户端添加标题无济于事。如果您发现您的服务器未添加标头,例如因为它以不同方式处理POST,更改客户端代码以触发服务器添加标头或更改服务器以正确回复。
  3. 小心Preflighted requests。如果您修改请求标头客户端,则可能会发出此类请求。它将在没有任何其他POSTed信息的情况下发送(即没有POST主体)。包括Access-Control-Allow-Methods标题[显然是POST]以及其他Access-Control* - 标题以及您对此类OPTIONS请求的回复。
  4. 如果您发送withCredentials(但未在示例中提供),Access-Control-Allow-Origin标头不得为通配符。
  5. 正如您所写,当您在浏览器中请求URL时,您会收到415错误,请查看此特定服务器所期望的内容。默认情况下,jQuery在使用application/x-www-form-urlencoded时对您的请求($.ajax)数据进行URL编码。 HTTP状态代码415表示您的客户端发送了服务器不喜欢使用的内容。如果服务器也在你的POST上用415解决了,那么如果错误处理程序中通常没有Access-Control-Allow-Origin标题就不会太令人惊讶。