0

我正在使用dataType:'json'anddata: {'post':val}在我的 ajax 中将数据发送到我的 php 文件。valindata: {'post':val}是一个变量。
发送到 php 文件的数据是[object Object]这样的,在将其分配给 php 变量之前,我需要对其进行解码。我是 JSON 新手,不太了解。
我试过$id=$_POST['post'];了,但这不起作用,因为发送的数据是 JSON 格式。
我如何发送“正常”数据或解码数据而不删除dataType:'json',因为我的 php 文件有一个数组,该数组通过注意发送回 ajax json_encode

:在 Ajax 中时,该值是完美分配的。(当我用alert({post:val}['post']);显示的结果提醒它时,就是我分配的)。

嗯 .. 这是我更新的 Ajax(我不小心在之前的代码中发布了错误的 Ajax):-

function op_prof(obj) {
    var xval = obj.id;
    var dataString = "{'u_search':'"+xval+"'}";

    $.ajax({
    type: "POST",
    url: '/script/profile.php',
    data: dataString,
    dataType: 'json',
    cache: false,
    success: function(data) {
        console.log(data);
    }
  });
};
4

3 回答 3

1

你应该使用

data: {post: dataString}

相反,在 php 中,使用json_decode($_POST['post']);. 这样,发布的数据就有了他们的名字('post' here),你可以用 WebKit 检查器或 Firebug 看到它。

如果使用data: dataString, 中不会有任何数据$_POST,但您仍然可以使用url 编码dataString的 PHP 脚本检索。$_SERVER["QUERY_STRING"]所以完成的行应该是$dataString = urldecode($_SERVER["QUERY_STRING"]);

此外,如果dataString是从一个简单的非嵌套对象字符串化,您可以使用

data: {key1: value1,
       key2: value2}

然后用 检索 php 中的值$value1 = $_POST['key1'];,节省编码和解析 JSON 的时间。

于 2013-05-19T10:20:37.067 回答
1

dataType指定您期望从服务器返回的数据类型。它不会导致数据以 JSON 格式发送。

如果设置给 PHP 程序的数据是,[object Object]那么某些东西会导致某些对象被字符串化并放入发送的数据中。您没有共享足够的代码来确定那是什么。

于 2013-05-19T10:11:37.390 回答
1

问题是您正在准备要作为字符串发送的数据。没有必要这样做。参数需要一个数据对象,data所以给它一个对象。然后,在服务器端,该对象中的每条数据都将作为单独的 post var 到达。

JS:

$.ajax({
    url: '/script/profile.php',
    data: {foo: 'bar'}, //<-- our data is an object, not a string to be decoded
    type: 'post'
}).done(function(response) {
    alert(response); //<-- alerts "received data "bar"!"
});

PHP

<?php
if (isset($_POST['foo'])) echo 'received data "'.$_POST['foo'].'"!';
?>

正如 Quentin 提到的,dataType参数决定了您期望从服务器返回的数据格式,而不是您发送它的格式。

于 2013-05-19T10:22:40.963 回答