簡體   English   中英

使用Ajax將PHP字符串傳遞給Javascript變量

[英]Pass a PHP string to a Javascript variable with Ajax

我這樣從數據庫中檢索數據:

while($row = mysql_fetch_array($result))
{
    echo $row['uid'];
    echo $row['note'];
}

我用ajax這樣打印:

xmlhttp.onreadystatechange = function () {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          console.log(xmlhttp.responseText)
      }
   }

但問題在於uid並注意其一個字符串。 例如:

"45 note goes here"

如何分別打印每一行。 像這樣:

xmlhttp.onreadystatechange = function () {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          console.log(  <?php echo json_encode($row['uid']); ?>  );
          console.log(  <?php echo json_encode($row['note']); ?>  );
      }
   }

你說的很對。 在您的php腳本中,返回一個json字符串,然后在您的javascript中可以將該字符串解析為一個javascript對象。 所以:

$json = array();
while($row = mysql_fetch_array($result))
{
   $json['uid']=$row['uid'];
   $json['note']=$row['note'];
}
print json_encode($json);

然后

xmlhttp.onreadystatechange = function () {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      var jsontext = xmlhttp.responseText;
      var json = JSON.parse(jsontext);
      console.log(json.uid)
      console.log(json.note)
  }
}

您正在嘗試json_encode的各個鍵的數組中,嘗試做json_encode($row); 否則,您將擁有一個JSON數組['my user id'],而不是一個JSON對象{uid:'my user id'}

另外,嘗試使用jQuery,您將能夠將響應解析為JSON對象。

$.post('myurl', {mydata}, function (jsonArray){/*success function*/}, 'json');

返回$ row作為json對象。

while($row = mysql_fetch_array($result))
{
    $data[] = $row;
}
echo json_encode($data);

在您的JavaScript中,您現在應該可以使用xmlhttp.responseText.0.uid (您可能希望遍歷不同的行)。

注意:我從來沒有使用純JavaScript來做到這一點,僅使用jQuery了,並且不確定是否可以正常使用。 您可能需要發送一個額外的標頭,以指示響應是JSON( header('Content-type: application/json'); ),您可能需要首先解析responseText,以便可以將其解釋為一個對象。

有機會在客戶端使用JSON解析器(例如jQuery的解析器),並在JavaScript上使用類似

for(i=0; i<rows.length; i++)
console.log(rows[i])

行是$ .parseJSON(xmlhttp.responseText)

暫無
暫無

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

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