2016-09-28 101 views
0

這是我的AJAX代碼來獲取下拉記錄。如何在AJAX成功函數中獲取json數據

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); 
?> 
+0

你怎麼發送一個JSON頭與PHP? –

+1

所以你有一些代碼。你有問題嗎? http://stackoverflow.com/help/how-to-ask(你有什麼問題?你是如何調試它的?你得到了什麼錯誤信息?你知道在哪裏尋找錯誤信息嗎?原始的HTTP請求和響應,你看起來像?等等) – Quentin

+0

你解析了響應JSON http://api.jquery.com/jquery.parsejson/ – ravisachaniya

回答

1

它看起來就像你正在創建的數據之前添加下列頭在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>"); 
}); 

的這部分需求對象的集合(elem )與namevalue屬性。相反,從你從PHP獲得的每個elem將是一個字符串或數字,因此elem.valueelem.name將是未定義的。

由於您使用此選項將選項附加到select,因此您的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); 
0

在你的PHP腳本確保您打印我們的編碼數據

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