javascript - AJAX 不以 JSON 格式发布

标签 javascript jquery ajax json

<分区>

使用 https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js 我有以下方法尝试向 Google 的 URL 缩短器发送 JSON 请求

$.ajax({
  type: "POST",
  dataType: "json",
  contentType: "application/json",
  url: "https://www.googleapis.com/urlshortener/v1/url",
  data: { longUrl: "http://some.url" }
})
  .done(function( msg ) {
    console.log( msg );
  });

返回 400 错误是因为请求的格式不正确。查看fiddler中的request,可以看到是这样的;

POST https://www.googleapis.com/urlshortener/v1/url HTTP/1.1
Host: www.googleapis.com
Connection: keep-alive
Content-Length: 29
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json, text/javascript, */*; q=0.01
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36
Content-Type: application/json
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,en-GB;q=0.6,fr;q=0.4

longUrl=http%3A%2F%2Fsome.url

我可以将请求修改为以下内容(不包括 header );

{ longUrl=http://some.url }

那么为什么 ajax 不将数据格式化为 JSON?

最佳答案

jQuery 不会为您将对象转换为 JSON 字符串。 dataType 用于响应,contentType 用于服务器。您仍然必须实际将数据序列化为 JSON:

$.ajax({
/* ... */
  data: JSON.stringify({ longUrl: "http://some.url" })
})

关于javascript - AJAX 不以 JSON 格式发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27363951/

相关文章:

javascript - 如果输入值满足要求则添加html属性

javascript - FileSaver saveAs 在 IE11 中不起作用

javascript - 正确显示 ajax 请求到 html 的结果

javascript - 通过ajax post请求发送默认数据

javascript - XMLHttpRequest onprogress total 在 Chrome 上始终为 0

javascript - 什么是 NaCl 套接字 API?

php - 发送新值后自动刷新下拉列表

jquery - 我如何让这个导航在 iphone 和 ipad 上工作,尽管它是响应式的

javascript - 如何为单个元素的 jQuery 组合框设置 minLength

javascript - 定义 jQuery Ajax 方法($.get、$.post、$.ajax、$.getScript 等)基本方法