$ .ajax发布请求不向服务器

时间:2016-07-29 01:08:26

标签: javascript jquery ajax post urllib

我遇到了从API请求数据的问题。文档说明我必须发帖子请求。我的目标是使用jQuery创建请求,然后设置结果数据的样式。

由于我使用跨域请求,我知道我必须使用jsonp。问题是我运行此代码时得到parseerror因为服务器返回了XML错误。 (如果未指定format,则服务器默认为xml响应)

$.ajax({
    type: 'POST',
    url: url,
    data: {format: 'json'},
    dataType: 'jsonp',
    success: function(data) {
      console.log("Success.");
    },
    error: function(data, error, err) {
      console.log(data.status);
      console.log(error);
      console.log(err);
    }
  });

在检查员内部,我看到:

Uncaught SyntaxError: Unexpected token <           
menu?&callback=jQuery2240569993828256961_1469752734662&format=json&_=1469752734663:1 

这是XML响应......

<?xml version="1.0" encoding="UTF-8"?><response> <response_header> <response_code>ERROR</response_code>
</response_header>
 <response_details> <error_details>The post parameters contain an invalid or disabled API ID</error_details>
</response_details>
</response>

因为它返回XML,我可以确定服务器甚至没有识别我的参数{format:&#39; json&#39;},因为这是Python中的相同请求:

from urllib.parse import urlencode
from urllib.request import Request, urlopen

url = url # Set destination URL here
post_fields = {'format':'json'}     # Set POST fields here

request = Request(url, urlencode(post_fields).encode())
json = urlopen(request).read().decode()
print(json)

由此产生的JSON响应:

{"response_header":{"response_code":"ERROR"},"response_details":{"error_details":"The post parameters contain an invalid or disabled API ID"}}

如您所见,它以JSON响应,证明服务器已读取发布请求。

出于某种原因,AJAX请求没有发送参数,这意味着我甚至无法通过包含api key + api id来获取我需要的实际数据。

谁能告诉我这里发生了什么?

谢谢。

0 个答案:

没有答案