2012-11-19 157 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

不客气:) –