Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
通过ajax到php脚本将JSON数组打印到屏幕_Php_Jquery_Html_Ajax_Json - Fatal编程技术网

通过ajax到php脚本将JSON数组打印到屏幕

通过ajax到php脚本将JSON数组打印到屏幕,php,jquery,html,ajax,json,Php,Jquery,Html,Ajax,Json,我一直在将我的代码与web上的其他示例进行比较,但仍然找不到我的错误。 当我加载页面并单击submit时,屏幕上什么也没有发生。但是,在Firebug中,我收到了POST 200 OK,应该出现在屏幕上的PHP脚本在POST响应选项卡中详细说明 由于Firebug做出了适当的响应,我对什么是错误的感到困惑 基本HTML表单 <form id="form" action="" method="post"> <input type="submit" name="submit

我一直在将我的代码与web上的其他示例进行比较,但仍然找不到我的错误。 当我加载页面并单击submit时,屏幕上什么也没有发生。但是,在Firebug中,我收到了
POST 200 OK
,应该出现在屏幕上的PHP脚本在POST响应选项卡中详细说明

由于Firebug做出了适当的响应,我对什么是错误的感到困惑

基本HTML表单

<form id="form" action="" method="post">
    <input type="submit" name="submit" id="submit" value="submit"/>
</form>
<div id="results"></div>
PHP


将数据类型设置为JSON将使jQuery ajax请求自动将其解析为Javascript对象。这里有两种解决方案。更改ajax请求的数据类型:

$.ajax({
                     type:'POST',
                        url: 'ok.php',
                        dataType:'text',
                        data: ({json:$jsonAddIt}),
                        success:function(data){
                             $("#results").html(data);
                            }
});
或者,您可以使用库对对象进行字符串化:

$.ajax({
                     type:'POST',
                        url: 'ok.php',
                        dataType:'json',
                        data: ({json:$jsonAddIt}),
                        success:function(data){
                             $("#results").html(JSON.stringify(data));
                            }
});

希望有帮助。

将数据类型设置为JSON将使jQuery ajax请求自动将其解析为Javascript对象。这里有两种解决方案。更改ajax请求的数据类型:

$.ajax({
                     type:'POST',
                        url: 'ok.php',
                        dataType:'text',
                        data: ({json:$jsonAddIt}),
                        success:function(data){
                             $("#results").html(data);
                            }
});
或者,您可以使用库对对象进行字符串化:

$.ajax({
                     type:'POST',
                        url: 'ok.php',
                        dataType:'json',
                        data: ({json:$jsonAddIt}),
                        success:function(data){
                             $("#results").html(JSON.stringify(data));
                            }
});

希望有帮助。

这两行不需要,第二行撤销第一行。把它们都拿走

$jsonAddIt = JSON.stringify(addIt);
$jsonAddIt = JSON.parse($jsonAddIt);
如果ajax请求成功,此行应该在div中为您提供
[object object]
,否则它将无所作为(这是您当前的结果)

目前,您的ajax请求实际上失败了,因为它没有返回预期的JSON数据类型。如果您将数据类型更改为“html”,它将起作用

$.ajax({
    type:'POST',
    url: 'ok.php',
    dataType:'html',
    data: {json:addIt},
    success:function(data){
        $("#results").html(data);
    }
});
而且

var addIt = new Object();
应该是

var addIt = {};

这两行不需要,第二行撤消第一行。把它们都拿走

$jsonAddIt = JSON.stringify(addIt);
$jsonAddIt = JSON.parse($jsonAddIt);
如果ajax请求成功,此行应该在div中为您提供
[object object]
,否则它将无所作为(这是您当前的结果)

目前,您的ajax请求实际上失败了,因为它没有返回预期的JSON数据类型。如果您将数据类型更改为“html”,它将起作用

$.ajax({
    type:'POST',
    url: 'ok.php',
    dataType:'html',
    data: {json:addIt},
    success:function(data){
        $("#results").html(data);
    }
});
而且

var addIt = new Object();
应该是

var addIt = {};

我认为问题在于您的
数据类型。通过说
json
,您告诉jQuery您期望返回的内容是
json
。其中php可能会在标题中将内容类型设置为html。您应该能够删除它,jQuery将自动从响应的标题中找出它。

我认为问题在于您的
数据类型。通过说
json
,您告诉jQuery您期望返回的内容是
json
。其中php可能会在标题中将内容类型设置为html。您应该能够删除它,jQuery将自动从响应的标题中找出它。

当您在成功中警告数据变量时,您有什么功能当您在成功中警告数据变量时,您有什么功能更改数据类型确实有帮助。谢谢你的信息+1更改数据类型确实有帮助。谢谢你的信息+1@aOviedo,我将研究如何按照您提到的方式添加stringify。谢谢你的帮助。@aOviedo,我会按照你提到的方式添加stringify。谢谢你的帮助。