簡體   English   中英

如何使用 $.ajax() 將字符串數組從 PHP 傳遞到 Javascript?

[英]How to pass an array of strings from PHP to Javascript using $.ajax()?

我有一個從數據庫中檢索名稱(字符串)的 PHP 腳本。 我想使用 $.ajax() 將此數組傳遞給 Javascript。 我無法理解我應該如何在 PHP 中對數組進行編碼,然后在 Javascript 中對其進行解碼。 有人可以為此提供示例代碼嗎? 非常感謝 !!

<?php // test.php
$myArray = array(1, 2, 3);
echo json_encode($myArray);
?>

HTML文件:

$(function() {
    $.getJSON('http://localhost/test.php', function(data) {
        $(data).each(function(key, value) {
            // Will alert 1, 2 and 3
            alert(value);
        });
    });
});

你可以使用json_encode

<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);
?>

您可以在以下位置閱讀完整示例:

http://www.prodevtips.com/2008/08/15/jquery-json-with-php-json_encode-and-json_decode/

或者

http://www.prodevtips.com/2009/12/09/multiple-select-lists-with-jquery-and-json/

<?php
    echo json_encode(array('key' => 'value', 'cool' => 'ice'));
?>

json 是一個 javascript 對象。 所以沒有必要“解碼”它。 但是,看起來您正在使用 jquery。 有一個用於檢索 json 數據的漂亮函數:

jQuery.getJSON(url, senddata, function(returndata){alert(returndata.cool);})

或者

jQuery.getJSON(url, senddata, function(returndata){mybigfunction(returndata);})

mybigfunction(data)
{
    myvar = data.cool;
    alert(myvar);
}

http://api.jquery.com/jQuery.getJSON/

或者你也可以像你提到的那樣用 $.ajax 來做:

jQuery.ajax({
    url: url,
    dataType: 'json',
    data: senddata,
    success: function(data){mybigfunction(data)}
});

mybigfunction(data)
{
    myvar = data.cool;
    alert(myvar);
}

http://api.jquery.com/jQuery.ajax/

“回調”是一個函數,它被調用並傳遞從 url 返回的 json 數據。

你會'冰'寶貝......呃......對不起玉米。

getJSON 方法相當簡短且方便。 查看鏈接了解更多詳情。

為此,您只需將一個腳本回顯到包含您的數據的 PHP 頁面中,然后您就可以從頁面上的任何其他 Javascript 訪問該頁面,包括 jQuery 和 .ajax()。

同樣,如果您只想通過 AJAX 調用傳遞它,只需使用 json_encode():

<?php
echo json_encode(
 array(
  'groupidlist'=>$groupids,
  'groupnamelist'=>$groupnames,
  'serverurl'=>$serverurl,
  'uid'=>$curuser->getID()
 )
);
?>

然后使用.ajax()的回調函數處理它,或者更好的是.getJSON() ,它專為這種用途而構建。

我保證我不僅在這里發垃圾郵件,而且我寫了一篇關於在 Javascript 和 PHP 之間傳遞變量的文章,因為我經常這樣做,所以我想出了一種簡單/可靠/干凈且可重用的方法來做到這一點。 如果您經常將數據從 PHP 傳遞到 Javascript 並且不需要 AJAX,我將在此處粘貼要點:

在每個外部 js 文件的頂部,我添加了關於需要哪些 PHP 變量的注釋,這樣我就可以在包含它時跟蹤我需要的內容(這是可選的,當然,但很好):

/* This script depends on the following variables in phpvars:
groupidlist
groupnamelist
serverurl
uid
*/

然后,在 PHP 文件中,我用一行 Javascript 傳遞所需的變量,為一個 JSON 數組分配所有需要的值。 PHP 中的示例,直接來自我的代碼:

<script type="text/javascript">
 var phpvars = <?php
echo json_encode(
 array(
  'groupidlist'=>$groupids,
  'groupnamelist'=>$groupnames,
  'serverurl'=>$serverurl,
  'uid'=>$curuser->getID()
 )
);
   ?>;
</script>

一旦設置完成,我就可以通過phpvars數組簡單地訪問我在 Javascript 中需要的任何 PHP 變量。 例如,如果我需要使用我的 serverurl 設置圖像源,我可以執行以下操作:

imgElement.src = phpvars.serverurl + '/images/example.png';

因為它使用 JSON,所以不必擔心通過嘗試插入 PHP 變量來確保您不會在 Javascript 中搞砸任何事情。 變量的編碼/解碼由內置的 JSON 函數在兩端處理,因此很難破壞它,並且傳遞變量是無腦的 - 您可以像傳遞任何其他 PHP 數組一樣傳遞它們。 在導致此問題的擺弄中,我在這兩個方面都遇到了問題,而此解決方案很好地解決了這些問題。

這是 PHP 文件代碼

<?php
$array = array(1, 2, 3);
echo json_encode($array);
?>

然后你可以像這樣在你的$.ajax()解析$array

success: function (data) {
            var x = JSON.parse(data);
            console.log(x);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM