我用PHP+knockoutJS,下面是我的ajax代码:
save: function() { $.ajax({ url:"http://localhost/loyalty/welcome/json/", type: "post", data: ko.toJSON(this), contentType: "application/json", success: function (result) { alert(result) } }); }
使用Firebug可以看出JSON消息发送正确,问题是如何在PHP接收所发送的名称是什么?
我用的是PHP5.6
提前感谢任何帮助。
http://jcyzone.iteye.com/blog/1733668
change
data: ko.toJSON(this),
to
data: {mydata : ko.toJSON(this) },
"mydata" can be any word you like.
FireBug查看传递的参数是:
da=%7B%22list%22%3A%7B%22deleted%22%3A%5B%5D%2C%22inserted%22%3A%5B%5D%2C%22updated%22%3A%5B%7B%22uid%22%3A%225%22%2C%22nickname%22%3A%22222222%22%2C%22username%22%3A%22222222222%22%7D%5D%2C%22_changed%22%3Atrue%7D%7D
通过:data: ko.toJSON(this),
传递的参数是:
{"list":{"deleted":[],"inserted":[],"updated":[{"uid":"5","nickname":"222222","username":"22222222"}],"_changed":true}}
@快乐播放器: 上面那串翻译后就是
da={"list":{"deleted":[],"inserted":[],"updated":[{"uid":"5","nickname":"222222","username":"222222222"}],"_changed":true}}
所以你的问题是?
我以为你已经知道怎么写了。
@爱编程的大叔:
我的代码:
com.ajax是封装简化JQuery的ajax操作
com.ajax({ url: '/admin.php/User/edit', data: ko.toJSON(post), success: function (d) { com.message('success', '保存成功!'); self.gridEdit.accept(); } });
执行ajax POST操作后,FireBug的截图
,PHP代码(使用ThinkPHP框架):
dump(json_decode($_POST));
,dump结果是:
<pre>NULL
</pre>
我想要的结果是$_post里面能够获取到post的json数据,但是现在是null
最终使用$GLOBALS['HTTP_RAW_POST_DATA']成功解决。
补充说明:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。