jquery中ajax的data为什么要JSON.stringify()

我以前写ajax的时候都是这么写的,举个例子:

$.ajax({
    url: url,
    data: {
        limit: 10
    },
    type: 'post',
    dataType: 'json'
}),

我一直以为data是个对象,最近来到一家新公司,写了半天不对,后来同事告诉我这么写:

$.ajax({
    url: url,
    data: JSON.stringify({
        limit: 10
    }),
    type: 'post',
    dataType: 'json',
    contentType: 'text/plain'
}),

想问一下,data不是个对象吗?这样不就变成字符串了吗?data为什么要JSON.stringify()啊?为什么我以前那样写没问题呢?

阅读 10.2k
4 个回答

你的写法就是一般的form表单形式
而你同事的写法是直接发送一个json字符串到服务器
两者在服务端的解析方法都不一样,谈不上谁对谁错

看看文档~
http://api.jquery.com/jQuery....

data
Type: PlainObject or String or Array
Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests. See processData option to prevent this automatic processing. Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below).

其实比如像get请求,最终还是会被转换成url里的?key=value这种形式

看一下原生JS的ajax就会知道

http://www.w3school.com.cn/aj...

其send参数是一个字符串,只是jQuery背后自动转换为了json字符串的格式。当我么自己封装ajax时,参数就看自己的实现了

前端都可以写。 服务端接收写法问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏