将json从ajax传递到php
JS文件:将json从ajax传递到php,php,json,ajax,Php,Json,Ajax,JS文件: var jsonsave = []; var dado = new Object(); dado.name = "bob"; dado.age = "000"; dado.test = "test"; var jason = JSON.stringify(dado); jsonsave.push(jason); $.ajax({ type: "POST", dataType: "JSON",
var jsonsave = [];
var dado = new Object();
dado.name = "bob";
dado.age = "000";
dado.test = "test";
var jason = JSON.stringify(dado);
jsonsave.push(jason);
$.ajax({
type: "POST",
dataType: "JSON",
url: "http://localhost/moodle/my/index.php",
data: "data="+jsonsave+"&file=true",
success: function(data){
console.log('work');
},
error: function(data)
{
console.log(data);
}
});
Arquivo php:
$arquivo = $_POST['data'];
$value= json_decode($arquivo, TRUE);
我从ajax调用一个php页面,但我不能接受json的值,它为空,你有什么想法吗?在你指定的ajax调用中 数据类型:“JSON” 这意味着您的调用需要JSON作为服务器返回的值 另一方面,在PHP端,您正在解码POST,这是将JSON转换为PHP对象(结构),并且您没有返回任何内容
解决方案很简单:返回JSON结构(尝试使用JSON_encode,也许还可以添加适当的头),这应该可以解决问题。为什么要将jason添加到jasonsave?您正在将字符串与数组连接起来。将jason直接放在那里:
data:“data=“+jason+”&file=true”,
这是因为我会在这个变量中添加更多数组,所以当我传递给这个“函数”时我只发送,但你仍然不能用字符串连接数组。您需要使用JSON,在jsonsave上进行字符串化。顺便说一句,您还可以向数据提供一个对象,然后jQuery正在进行JSON编码。那么,我如何将数组放入数据中呢?我使用json.stringify来查看第一个示例:您说过这样的put吗?jsonsave=json_encode(jsonsave);我这样做了,但在控制台上显示了这一点:json_encode未定义您不能在JS中使用json_encode。这是PHP函数。在您的代码中,您向服务器发送的数据如下:data:{“name”:“bob”,“age”:“000”,“test”:“test”}file:true从您的示例中,我不确定您在服务器端的最终目标是什么,但是如果您想发回json来测试AJAX调用,只需执行以下操作:$arquivo=$\u POST['data'];标题('Content-Type:application/json');echo$arquivo;