Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将json从ajax传递到php_Php_Json_Ajax - Fatal编程技术网

将json从ajax传递到php

将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",

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",
               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;