好吧所以我只是努力通过我的jquery ajax传递json
var values = {"name":$("#folderName").val(),"dir":directory};
var valstring = JSON.stringify(values);
var user = {json:valstring};
$.ajax({
url: "makeFolder.php",
data:user,
cache: false,
contentType: false,
processData: false,
type: "POST",
success: function(n) {
alert(n);
window.location.href=window.location.href;
}
});
然后在我的php中
$json = $_REQUEST['json'];
$json = stripslashes($json);
$jsonobj = json_decode($json);
echo $jsonobj->name;
意味着这应该工作不应该吗?我可能在某个地方做了一些非常愚蠢的事情,但我却是愚蠢的 它输出html标签而不是echo,当我采用我的php中的所有帖子查询它100%工作
答案 0 :(得分:1)
我没有足够的信息真正知道你的问题是什么,但鉴于可获得的信息,我对这一行感到怀疑:
contentType: false
...根据jQuery.ajax
documentation,contentType
参数应为String类型,因此我认为false
不是可接受的值。
特别是因为您还指定了processData: false
。
例如,看看这个jsfiddle:http://jsfiddle.net/6JkZk/使用像firebug这样的东西,你可以看到AJAX请求的主体只包含这个:
[object Object]
服务器根本没有收到您的json
数据。如果删除processData: false
之类的http://jsfiddle.net/6JkZk/1/,则AJAX请求包含使用data
参数指定的实际POST参数。
您应该只在向processData: false
参数提供String
时设置data
,或者当您提供的对象采用toString()
方法时设置{{1}} :http://jsfiddle.net/pDrUX/
答案 1 :(得分:0)
您必须将要发送的整个对象字符串化为服务器:
var user = JSON.stringify({"json": values});
答案 2 :(得分:-1)
试试这个:
var values = '{"name": "' + $("#folderName").val() + '", "dir": "' + directory + '"}';