我在我的ajax中使用dataType:'json'
和data: {'post':val}
将数据发送到我的php文件。 val
中的data: {'post':val}
是变量
发送到php文件的数据是[object Object]
所以,在将它分配给php变量之前,我需要解码它。我是JSON的新手并不太了解。
我尝试了$id=$_POST['post'];
,但由于发送的数据是JSON格式,因此不起作用
如何发送'普通'数据或解码数据而不删除dataType:'json'
,因为我的php文件有一个数组,由json_encode
发送回ajax
注意:在Ajax中完美地赋值。 (当我用alert({post:val}['post']);
提醒时,显示的结果就是我指定的内容。
嗯......这是我的更新 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);
}
});
};
答案 0 :(得分:1)
dataType
指定您希望从服务器返回的数据类型。它不会导致数据以JSON格式发送。< / p>
如果设置为PHP程序的数据为[object Object]
,则会导致某些对象被字符串化并放入发送的数据中。您还没有共享足够的代码来确切地确定它是什么。
答案 1 :(得分:1)
你应该使用
data: {post: dataString}
相反,在php中,使用json_decode($_POST['post']);
。通过这种方式,发布的数据有其名称(此处为“post”),您可以使用WebKit检查器或Firebug查看它。
如果您使用data: dataString
,则$_POST
中不会有任何数据,但您仍然可以使用dataString
在PHP脚本中检索$_SERVER["QUERY_STRING"]
,这是url编码的。所以完成的行应该是$dataString = urldecode($_SERVER["QUERY_STRING"]);
此外,如果dataString
是从一个简单的非嵌套对象进行字符串化,则可以使用
data: {key1: value1,
key2: value2}
然后用$value1 = $_POST['key1'];
在php中检索值,节省时间编码和解析JSON。
答案 2 :(得分:1)
问题是您正准备将数据作为字符串发送。没有必要这样做。 data
param需要一个数据对象,所以给它一个对象。然后,在服务器端,该对象中的每个数据将作为单独的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'].'"!';
?>
正如昆汀所提到的,dataType
参数指示了您希望从服务器返回的数据格式,而不是您发送到的格式。