2017-05-08 58 views
-1

我發現一個奇怪的問題。AJAX響應,不能提醒JSON字符串正確

使用php我正在運行mysql數據庫的select查詢,我試圖將此返回給我的ajax調用,所以我可以通過它循環,但我總是得到未定義的警報,我可以警告整個json字符串但是,但不能達到目標值。

Ajax代碼:

 $.ajax({ 
      type: "POST", 
      url: 'database_data.php', 
      data: { 
       action: 'ct', 
       input: input 
      }, 
      success: function (data) { 
       var obj = JSON.parse(data); 
       alert(obj[0].pid); 
       alert(data[0].pid); 
      },error: function(request, status, error){ 
       alert("Error: Could not delete"); 
      } 
     }); 

PHP代碼:

$base= mysqli_connect($dbhost, $dbuser, $dbpass, $dbbase); 
if ($_POST['action']== "ct"){ 
    $input = $_POST['input']; 
    $return_arr = array(); 
    $sql = "SELECT pid FROM programmes WHERE complete_title LIKE '%$input%' LIMIT 30"; 

if ($result = mysqli_query($base, $sql)){ 
    while ($row = mysqli_fetch_assoc($result)) { 
     $row_array['pid'] = $row['pid']; 
     array_push($return_arr,$row_array); 
    } 
} 

mysqli_close($base); 

echo json_encode($return_arr); 

}

警報數據給出的這樣的迴應:

[{"pid":"p00547jm"},{"pid":"p0054880"},{"pid":"p005492h"},... 

如果我選擇了報警數據[0],它打印每個數據[1]個性字符

+0

'$阿賈克斯({ 數據類型: 「JSON」, 網址:網址, 數據:數據, 成功:成功 });'添加數據類型或使用簡寫:http://api.jquery.com/jquery.getjson/ – ippi

+0

您正在提醒未分析的數據[0]。 – rishipuri

+0

'obj'是一個數組,因此您需要使用適當的索引:'obj [0] .pid' – CBroe

回答

0

您可以使用dataType告訴jQuery的你從服務器期待回。見http://api.jquery.com/jquery.ajax/

在你的情況

$.ajax({ 
      type: "POST", 
      url: 'database_data.php', 
      dataType: 'json', 
      data: { 
       action: 'ct', 
       input: input 
      }, 
      success: function (data) { 
       var obj = data; // I should already be json! 
       alert(obj.pid); 
       alert(data.pid); 
      },error: function(request, status, error){ 
       alert("Error: Could not delete"); 
      } 
     }); 
0

這是因爲您可能獲取字符串作爲響應。所以你的datastring

您可以使用JSON.parse()將它解析爲JSON對象和訪問這樣的數據,

data = '[{"pid":"p00547jm"},{"pid":"p0054880"},{"pid":"p005492h"}]'; 
 

 
console.log(JSON.parse(data)[0].pid);

+0

他已經完成了JSON.parse()。請參閱html代碼 – bigbounty

+0

@bigbounty他仍然需要首先訪問正確的數組元素。 – CBroe