0

好的,所以我只是在努力用我的 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% 工作

4

3 回答 3

1

我没有足够的信息来真正知道您的问题是什么,但是鉴于可用的信息,我对此线表示怀疑:

contentType: false

...根据jQuery.ajax文档contentType参数应该是字符串类型,所以我认为这不是false一个可接受的值。

特别是因为您还指定了processData: false.

例如,查看这个 jsfiddle: http: //jsfiddle.net/6JkZk/使用类似 firebug 的东西,您可以看到 AJAX 请求的正文只包含以下内容:

[object Object]

服务器根本没有收到您的json数据。如果您processData: false像这样删除http://jsfiddle.net/6JkZk/1/,则 AJAX 请求包含参数指定的实际 POST 参数data

您应该只在为参数提供 a 时进行设置,processData: false或者当您提供的对象具有方法时,如下所示:http: //jsfiddle.net/pDrUX/StringdatatoString()

于 2013-05-26T15:37:12.577 回答
0

您必须对要发送到服务器的整个对象进行字符串化:

var user = JSON.stringify({"json": values});
于 2013-05-26T15:27:42.523 回答
-1

试试这个:

var values  = '{"name": "' + $("#folderName").val() + '", "dir": "' + directory + '"}';
于 2013-05-26T15:22:55.077 回答