2009-04-26 34 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