2009-04-26 37 views
1

我开始使用jQuery的$。阿贾克斯(),但我不能回到我想要的东西......我送这样的:多少有些失落与jQuery + PHP + JSON

$(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中有一个回声array2json声明,但它只是给了胡言乱语......我真的不知道我做错了什么,我已经GOOGLE了大约3个小时只是基本上相同的东西。另外,我不知道如何通过另一种方式将参数传递给$ .ajax函数中的“data:”,例如从网页获取信息,任何人都可以帮助我吗?


编辑

我做了你的建议,并将其打印现在的数据非常感谢你=),但是,我在想,我怎么可以将数据发送到“数据”部分jQuery中,因此需要从假设用户输入,还我被检查的PHP文件,它说我可以写这样的:

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

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

+0

dataType:“json” - 保持小写。 – Anthony 2009-04-26 19:56:52

回答

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才被添加。所以,如果你有任何东西早于它,它是不可用的。

+0

这是一个梦幻般的答案!感谢您回答问题并提出执行信息传输的方法。这是FAQ/HOWTO材料。 – 2013-01-18 21:22:17