2012-11-19 182 views
0

我想從我的數據庫返回一行,其中通過jQuery發送到PHP的ID匹配字段值。我回到未定義,似乎無法按我的方式工作。jQuery ajax返回undefined

我的jQuery:

function renderPreview(event) { 
    target = event.target.id; 

    console.log(target) // should say the id name 

      $('#results').removeClass(); 
      $('#results').addClass(target).html($('#textInput').val()); 
      $('html, body').animate({ scrollTop: 600}, "slow"); 

    console.log('start ajax') 

    $.ajax({ 
     url: '../test.php', 
     type: 'POST', 
     data: [{'class' : target}], 
     dataType: 'json', 
     success: function(data) { 
      var id = data[0]; 
      var name = data[1]; 
      var style = data[2]; 
      $('#codeTest').html("<b>id: </b><br />"+id+"<br /><b> name: </b><br />"+name+"<br /><b> style: </b><br />"+style); 
     } 
    }); 
}; 

PHP:

$dbstylename = $_POST['class']; 
$result = mysql_query("SELECT * FROM style where stylename like '$dbstylename'"); 
$array = mysql_fetch_row($result); 

echo json_encode($array); 

mysql_close($con); 
?> 

而且是有一行代碼,我可以把我的jQuery或PHP看到我的Chrome開發者控制檯會怎樣查詢通過?...就像我已經擁有的console.logs一樣。

+0

你嘗試把你的成功部分調試器,或嘗試將告警數據[0],如果是什麼結果 – rahul

+0

@rahul數據[0]未定義 – tehaaron

+1

試圖提醒data.d [0] – rahul

回答

2

問題是您沒有以正確的方式發送數據。 jQuery將您分配給data:屬性的值傳遞給jQuery.param。該函數將數據轉換爲適當的查詢字符串。

但是,如果您傳遞一個數組而不是一個對象,則.param預計它是一個對象數組,其中每個對象都有一個namevalue屬性。

你可以看到什麼jQuery的調用.param直接生成你的情況:

> jQuery.param([{'class' : target}]) 
    "undefined=undefined" 

你得到了正確的查詢字符串,如果你通過任何

[{name: 'class', value: target}] 

{'class': target} 

兩者都生成:

"class=<whatever the value of target is>" 
+0

不客氣:) –