2013-05-19 62 views
0

我在我的ajax中使用dataType:'json'data: {'post':val}将数据发送到我的php文件。 valdata: {'post':val}是一个变量。
发送到php文件的数据是[object Object]因此,在将它分配给一个php变量之前,我需要对它进行解码。我是JSON新手,不太了解。
我试过$id=$_POST['post'];,但由于发送的数据是JSON格式,所以不起作用。
如何发送“正常”数据或内部消除消除dataType:'json'我的PHP文件有一个由json_encode

注送回AJAX数组中的数据进行解码:该值是完全在阿贾克斯时分配。 (当我用alert({post:val}['post']);提醒它时,显示的结果是我指定的)。

嗯..这是我更新阿贾克斯(我不小心贴错一个在以前的代码): -
在php中解码JSON POST

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

你要找的'json_decode'用法是这样的:'$ ID = json_decode($ JSON) - > u_search;'。 –

+0

你可以添加php脚本profile.php吗?数据是一个对象的事实是非常正常的jquery ajax eval json自动。 – SmasherHell

回答

1

dataType指定,你从期待的数据类型服务器。它不会导致数据以JSON形式发送。

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

+0

@Quetin我更新的代码 – Tom

+0

@汤姆 - 更新后,该代码将发送字符串'{“u_search”:XVAL}','不是[对象的对象]' – Quentin

+0

@Quetin我已经更新了代码。如果我使用'{“u_search”:XVAL}'代码在'成功:'不跑 – Tom

1

您应该使用

data: {post: dataString} 

代替,而在PHP中,使用json_decode($_POST['post']);。通过这种方式,发布的数据的名称('发布'在这里),你可以看到它与WebKit督察或萤火虫。

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

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

data: {key1: value1, 
     key2: value2} 

然后retrive值在PHP与$value1 = $_POST['key1'];,节省了时间编码和解析JSON 。

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 PARAM决定你期望数据格式回从服务器,而不是格式您发送它。

+0

@Uktanos我已经更新了我的代码 – Tom

+0

是但你还是准备你的数据作为JSON字符串。这就是问题。准备它作为一个对象,而不是一个字符串,并通过它。你不应该在JavaScript中或者在PHP中制作你自己的JSON字符串。 – Utkanos

+0

如果我使用'数据:{u_search:“XVAL”}','上成功的代码:'不跑 – Tom