簡體   English   中英

如何在AJAX成功函數中獲取json數據

[英]How to get json data in AJAX success function

這是我的AJAX代碼,用於提取下拉記錄。

function item_value() {
  $.ajax({
    type: "POST",
    url: "ajax.php",
    contentType: "application/json; charset=utf-8",
    async: false,
    data: data,
    dataType: "json",
    success: function (json) {
      if (json == '') {
        alert('No Records');
      } else {
        alert(json);
        $.each(json, function (index, elem) {
          $("#item_select1").append("<option value=\"" + elem.value+ "\">" + elem.name+ "</option>");
        });
      }
    }
  });
}

該文件用於在AJAX成功時提取記錄或獲取記錄。

Ajax.php

<?php
include('../dbconnection/comp_connect.php');
$qry_item="SELECT item_id,item_name,item_unit,rate,description,tax_id,status FROM item";
$view_item=$conn->prepare($qry_item);
$view_item->execute();
$rs_item=$view_item->fetch((PDO::FETCH_ASSOC))
$data = array('item_name' =>$rs_item['item_name'],
              'item_unit'=>$rs_item['item_unit'],
              'rate'=>$rs_item['rate'],
              'description'=>$rs_item['description'],
              'tax_id'=>$rs_item['tax_id']
             );
echo json_encode($data);
?>

看起來您在PHP中創建的數據與您在AJAX成功函數中嘗試執行的操作不一致。 PHP代碼讀取一行從數據庫中,所以它會返回JSON的樣子:

{
    "item_name": "something",
    "item_unit": "something",
    "rate": "something",
    "description": "something",
    "tax_id": "something"
}

但這是您成功功能的一部分

$.each(json, function (index, elem) {
  $("#item_select1").append("<option value=\"" + elem.value + "\">" + elem.name + "</option>");
});

需要具有namevalue屬性的對象( elem )的集合。 取而代之的是,從PHP中獲得的東西,每個elem將是一個字符串或數字,因此elem.valueelem.name將是未定義的。

由於使用此選項將選項附加到一個選擇上,因此您的PHP需要返回多行,並且您在PHP中分配的鍵需要與您在成功函數中引用的屬性匹配。 這樣的事情應該更接近您想要的。

<?php
include('../dbconnection/comp_connect.php');
$qry_item = "SELECT item_id, item_name FROM item";
$view_item = $conn->prepare($qry_item);
$view_item->execute();
while ($item = $view_item->fetch((PDO::FETCH_ASSOC)) {
    $data[] = ['value' => $rs_item['item_id'], 'name' => $rs_item['item_name']];
}
echo json_encode($data);

在您的php腳本中,請確保在打印編碼后的數據之前添加以下標頭

header('Content-type: application/json');
echo json_encode($data);

暫無
暫無

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

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