简单的ajax使用json

时间:2013-05-26 15:19:29

标签: php jquery ajax json

好吧所以我只是努力通过我的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%工作

3 个答案:

答案 0 :(得分:1)

我没有足够的信息真正知道你的问题是什么,但鉴于可获得的信息,我对这一行感到怀疑:

contentType: false

...根据jQuery.ajax documentationcontentType参数应为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 + '"}';