2013-03-27 110 views
0

有人可以幫助我如何傳遞來自PHP的值數組並使用AJAX檢索它。我發現的只是從PHP傳遞一個值。當我試圖傳遞一個數組我不值知道如何接受它在阿賈克斯將數組從PHP傳遞到使用PHP的javascript

這是我的PHP代碼:

$success[]; 
$timeout[]; 
$fail[]; 

while($row1 = mysql_fetch_array($masterresult)) 
{ 
    $success[]=$row1[1]; 
    $timeout[]=$row1[2]; 
    $fail[]=$row1[3]; 
} 

echo json_encode(array("a"=>$success,"b"=>$timeout,"c"=>$fail)); 

,下面將通過AJAX調用:

var channel; 
function overall(){ 
    $(".one").show(); 
    $(".two").hide(); 
    $(".three").hide(); 
    $(".four").hide(); 
    window['channel']="overall"; 
    $.ajax({ 
      type:"GET", 
      url:"dash2.php", 
      data:{channel:channel}, 
      dataType:'json', 
      success:function(data){ 
        console.log(data.a); 
        console.log(data.b); 
        console.log(data.c); 
        } 
      }); 
    } 

我應該如何將這些php數組值傳遞給這個ajax調用?有人可以幫我的代碼

+0

你想把數組傳遞給javascript? 在使用PHP創建頁面(在這種情況下,不需要AJAX)或頁面顯示給用戶之後(在這種情況下,您必須使用AJAX?) – Marshall 2013-03-27 16:53:57

+0

這個問題(或非常多喜歡它)在這裏被問了很多次,所以它不再有趣了。您是否嘗試在網站上搜索答案?您是否嘗試閱讀輸入問題時出現的「相關」問題? – Spudley 2013-03-27 16:55:01

+0

可以幫我發佈代碼嗎? – 2013-03-27 17:12:45

回答

2

你想要做的是encode it as JSON

$yourArray = array('asdf', 'qwer', 'zxcv'); 
echo 'var yourJavaScriptArray = ' . json_encode($yourArray) . ';'; 

這使得所有的任意數據都可以安全地用於JavaScript。

如果你只是用AJAX做這件事,那麼不需要var部分。直接從json_encode()輸出。

+0

我更喜歡json_decode ...他的方式比Mr Encode更容易... – 2013-03-27 16:47:59

+0

你能檢查我發佈的代碼嗎?建議我在ajax調用中做什麼? – 2013-03-27 17:05:43

+0

@jibindcruz,你有什麼問題?你將不得不調試一下。你的問題是客戶端還是服務器端?查看腳本的輸出並進行一些基本的調試。 – Brad 2013-03-27 18:27:49

2

無論是一個值或例如數組多個值,你應該總是使用:

json_encode($your_php_var) 
+0

OT,你爲什麼[拒絕這個改變](http://stackoverflow.com/review/suggested-edits/1791862)?答案中的代碼有編輯試圖糾正的拼寫錯誤。 – 2013-03-27 18:20:29

+0

@MooingDuck因爲它改變你的答案。這可能是一種改進,但如果OP根據您的答案找到更好的解決方案,他應該在問題中發佈,而不是在您的答案中。 – jeroen 2013-03-27 19:52:26

+0

我只是想表達我對這個決定的不同意見。在代碼中明顯的拼寫錯誤應該被允許是IMO的固定,如果你不確定,就有一個跳過按鈕。 – 2013-03-28 00:34:21

0
  1. json_encode您在PHP端陣列。
  2. 在JavaScript中使用該JSON對象,而無需額外的工作,這是JavaScript的一部分。
  3. 當你把它發回到PHP只是json_decode它在PHP中。

參考:PHP Manual

0

您可以結合使用JSON使用jQuery了點。

<?php 

    $myArray = array('a', 'b'); 
    echo json_encode($myArray); 

?> 

阿賈克斯

$.get('http://localhost/index.php', 
    function(data) { 
     var response = jQuery.parseJSON(data); 
     console.log(response); 
    } 
); 

在您的代碼:

var channel; 
function overall(){ 
    $(".one").show(); 
    $(".two").hide(); 
    $(".three").hide(); 
    $(".four").hide(); 
    window['channel']="overall"; 
    $.ajax({ 
      type:"GET", 
      url:"dash2.php", 
      data:{channel:channel}, 
      dataType:'json', 
      success:function(data){ 
        console.log(data["a"]); 
        console.log(data["b"]); 
        console.log(data["c"]); 
      } 
    }); 
} 
+0

看到,但我想單獨的這些值 – 2013-03-27 17:17:04

+0

如果成功包含54,67,32我可以訪問使用PHP中的索引,但一旦我將它傳遞給ajax我將如何訪問這些值? – 2013-03-27 17:17:53

+0

使用索引,例如'數據[ 「一」]'。 – Mati 2013-03-27 17:22:04

0

希望這個例子會幫助你。試想一下,如果你在html表單上有一些輸入數據,並且需要通過AJAX發送它們,請在服務器端對它們做一些處理,然後在客戶端收回結果並使用它做一些事情。

<form id="my_form" method="post" action="<?=$ServerSideUrl?>"> 
    <input type="text" name="field_1" value=""> 
    <input type="text" name="field_2" value=""> 
    <input type="text" name="field_3" value=""> 
</form> 

這裏是你的AJAX腳本,我在這個例子中使用的JQuery

$('#my_form').ajaxSubmit({ 
     dataType: 'html', 
     error: function() { 
      alert('some error text'); 
     }, 
     complete: function(data) { 
      //data this is the result object which returned from server side 
      //for example you shpold alert the sum of thouse 3 field 
      alert(data.sum); 
     } 
}); 

這裏是你的服務器端代碼

<? 
    $data = array(); 
    $data["sum"] = $_POST["field_1"] + $_POST["field_2"] + $_POST["field_3"]; 
    echo my_json_encode($data); 
    return true; 
?> 

所以,當你的AJAX將完成它提醒總和三個字段在你的表單上,

+0

你可以幫我發佈的代碼 – 2013-03-27 17:13:15