我正在尝试使用ajax从mysql db中检索一行,代码如下:
jQuery.ajax({
type: 'POST',
url: 'Connection.php',
dataType: 'text',
data: {'query_id' : query_id},
success: function(response){
data = response;
alert(data['username']); //print undefined!!!
},
error: function(xhr, ajaxOptions, thrownError){
alert("thrownError");
}
});
这是我的mysql php代码:
<?php
$con = mysql_connect('****','****','****');
mysql_select_db("eBay",$con);
$username = $_SESSION['username'];
$query_id = $_POST['query_id'];
$myquery = "SELECT * FROM `Output` WHERE `username` =" '$username';
$query = mysql_query($myquery);
if ( ! $query ) {
echo mysql_error();
}
$data = mysql_fetch_array($query);
echo ($data);
mysql_close($server);
?>
在我得到的响应中,我有未定义的数组单元格。有什么想法吗?
答案 0 :(得分:0)
只返回php中的用户名:
$data = mysql_fetch_assoc($query)['username'];
在你的javascript中你应该能够做警报(数据),而不是在数组中搜索用户名元组。
理想情况下,您应该以json而不是文本的形式返回数据,因为它可以保持结构化并且更容易在javascript中访问。您需要将ajax选项更改为dataType:'json' 和PHP代码:
$data = json_encode(mysql_fetch_assoc($query));
答案 1 :(得分:0)
你在$ data变量中得到数组,所以你应该使用json_encode函数来获得结果行中的所有值 -
$myquery = "SELECT * FROM `Output` WHERE `username` ='".$username."'";
foreach ($myquery as $test)
{
$field1_value =$test->name_of_field1_in_db;
$field2_value =$test->name_of_field2_in_db;
$field3_value =$test->name_of_field3_in_db;
}
$all_values_in_array=array('field1'=>$field1_value,'field2'=>$field2_value,'field3'=>$field3_value,);
echo json_encode(echo json_encode($arr_provider);
并获得像这样的ajax suucess函数的所有值 -
success: function(response){
var pro = jQuery.parseJSON(response);
var field1_val=pro.field1; //var field1 contain value of field1 in db
var field2_val=pro.field2;
var field3_val=pro.field3;
},
希望它会对你有所帮助。
最好的运气