解决方案 »

  1.   

    由于你没告诉我们你的 Simple.Ajax 是如何写的,那么也只能从原理上说一下
    1、如果使用 post 方式发送,那么必须有 Content-Type = application/x-www-form-urlencoded 的声明
    否则 php 不会将出传入的数据解析到 $_POST 数组
    你发了一个 contentType = application/json 的声明,即便你的 Simple.Ajax 会自动补上一个 Content-Type = application/x-www-form-urlencoded 的声明。这两个相佐的声明也会使 php 无所适从
    2、你发送的数据是 {data:jsonData},这是一个 js 对象。即使能够发送成功,php 也会因为不认识这个对象,而无法解析。凡是与外界进行交换的数据结构,都需要按双方约定的格式序列化成字符串假定你的 Simple.Ajax 可以将 js 的对象转换成 JSON 格式串
    并且你也去掉了 contentType = application/json 的声明
    那么你在 $_POST 中可以看到以那个 JSON串为键的元素
    如果你坚持不愿意去掉 contentType = application/json 的声明
    或许你个用 file_get_contents('php://input') 取到传入的内容
      

  2.   

    感觉我把问题复杂化了.其实我只需要把可能包含&的值用encodeURIComponent编码一下,变成百分号+字母数字这样就OK了...哈哈...
    Simple.Ajax 内容多了不贴出来了.不过里面默认是用Content-Type = application/x-www-form-urlencoded 作为声明的,如果我最后一个参数写上json的话就使用Content-Type=application/json作为声明
      

  3.   

    如果有 Content-Type=application/json 声明,$_POST 是不会有数据的
      

  4.   

    file_get_contents('php://input') 
    但不保证能成功application/json 只是服务器给使用者用的,告诉用户:你可把内容解释成一个 json 对象
    就好比 image/png 是说这是一个 png 图片一样而用户向服务器发送数据时,只有
    application/x-www-form-urlencoded
    multipart/form-data
    text/plain
    三种声明