jquery + php + json有点丢失了

时间:2009-04-26 19:09:27

标签: php javascript jquery json

我开始使用jquery $ .ajax()但是我无法回复我想要的...我发送了这个:

$(function(){
            $.ajax({
                url: "graph_data.php",
                type: "POST",
                data: "casi=56&nada=48&nuevo=98&perfecto=100&vales=50&apenas=70&yeah=60",
                dataType: "json",
                error: 
                function (xhr, desc, exceptionobj) {
                    document.writeln("El error de XMLHTTPRequest dice: " + xhr.responseText);
                },
                success:
                function (json) {
                    if (json.error) { alert(json.error); return; }
                    var output = "";
                    for (p in json) {
                        output += p + " : " + json[p] + "\n";
                    }
                    document.writeln("Results: \n\n" + output);
                }
            });
        });

我的php是:

<?php

$data = $_POST['data'];

function array2json($data){ 
    $json = $data;

    return json_encode($json);
}
?>

当我执行这个时,我出来了:

  

结果:

就像我曾经在php中有一个echo array2json语句,但它只是给了回复的胡言乱语......我真的不知道我做错了什么,我用谷歌搜索了大约3个小时才得到基本的同样的东西。另外我不知道如何将参数传递给$ .ajax函数中的“data:”,如从网页获取信息,有人可以帮助我吗?


修改

我做了你的建议并打印数据现在非常感谢你=)然而,我想知道,我怎么能将数据发送到jQuery中的“data:”部分所以它来自于让我们说用户输入,我也在检查php文档,它说我可以编写类似的东西:

json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP)

然而,如果我这样做,我得到一个错误,说json_encode接受1参数,我给2 ...任何想法为什么?我正在使用php 5.2

1 个答案:

答案 0 :(得分:7)

首先:您传递给PHP脚本的数据将位于$_POST,而不是$_POST['data']

下一步:你需要用一些数据实际调用array2json函数......那是完整的代码示例吗?

此外,我不确定array2json应该做什么...为什么不直接致电json_encode

对于您的示例,您只需使您的PHP文件看起来像这样:

print json_encode($_POST);

最后,你应该得到像Firebug这样的工具来轻松调试你的AJAX调用。

修改

要从用户发送数据,您只需在页面中的任意位置添加form,然后捕获submit事件和serialize数据,或者只是单个输入字段的get the value。然后,您可以使用它构建数据查询,作为字符串或对象。还有非常受欢迎的jQuery Form plugin使这一切变得更容易。

您收到错误的原因是因为json_encode的第二个参数在PHP 5.3.0之前未添加。所以,如果你有任何比这更早的东西,你就无法使用。