在 jQuery AJAX Success 中从 MySql 获取特定响应
Posted
技术标签:
【中文标题】在 jQuery AJAX Success 中从 MySql 获取特定响应【英文标题】:Get Specfic response from MySql in jQuery AJAX Success 【发布时间】:2015-02-13 05:45:29 【问题描述】:我有这个 ajax 代码,它将在 Success 块中从 mysql 返回结果。
$.ajax(
type:"POST",
url:"index.php",
success: function(data)
alert(data);
);
我的查询
$sql = "SELECT * FROM tablename";
$rs=parent::_executeQuery($sql);
$rs=parent::getAll($rs);
print_r($rs);
return $rs
我在成功 AJAX 警报中的响应数组
Array
(
[0] => Array
(
[section_id] => 5
[version] => 1
[section_name] => Crop Details
[id] => 5
[document_name] => Site Survey
[document_master_id] => 1
[document_section_id] => 5
)
[1] => Array
(
[section_id] => 28
[version] => 1
[section_name] => Vegetative Report
[id] => 6
[document_name] => Site Survey
[document_master_id] => 1
[document_section_id] => 28
)
)
我只想从结果中获取 section_name 和 document_name,以便将这两个值附加到我的列表中。
【问题讨论】:
使用json_encode()
将响应返回为JSON,所以可以用javascript解析。
【参考方案1】:
不要使用print_r()
返回响应,使用json_encode()
:
echo json_encode($rs);
然后在Javascript中,你可以这样做:
$.ajax(
type:"POST",
url:"index.php",
dataType: 'json'
success: function(data)
for (var i = 0; i < data.length; i++)
console.log(data[i].section_name, data[i].document_name);
);
【讨论】:
确保 PHP 脚本不输出除此echo
语句之外的任何内容。转到“网络”选项卡以查看完整响应,这样您就可以查看是否有其他内容正在回显。
成功了。我有 在顶部,我没有观察到。再次感谢。【参考方案2】:
更改您的选择查询
$sql = "SELECT section_name,document_name FROM tablename";
【讨论】:
谢谢。但我加入了多个表。我不能有这个查询。我需要在 ajax 本身中过滤它。 为什么没有这个查询?这个查询所做的只是过滤掉你想要的值。 那我就不会问这个问题了 提供您的查询,让其他人为您决定方式。 即使他改变了查询,他仍然有如何在Javascript中获取数据的问题。print_r()
输出不是为解析而设计的。【参考方案3】:
$sql = "SELECT * FROM tablename";
$rs=parent::_executeQuery($sql);
$rs=parent::getAll($rs);
return json_encode($rs);
index.php
$.ajax(
type:"POST",
url:"index.php",
success: function(data)
alert(data);
var data = JSON.parse(data);
/* you can use $.each() function here */
);
【讨论】:
它给了我 Uncaught SyntaxError: Unexpected token S【参考方案4】:这样做:
$sql = "SELECT * FROM tablename";
$rs=parent::_executeQuery($sql);
$rs=parent::getAll($rs);
$resp = array();
foreach( $rs as $each )
$resp[]['section_name'] = $each['section_name'];
$resp[]['document_name'] = $each['document_name'];
return json_encode($resp);
像这样访问 JSON 响应:
for (var i = 0; i < data.length; i++)
console.log(data[i].section_name, data[i].document_name);
【讨论】:
以上是关于在 jQuery AJAX Success 中从 MySql 获取特定响应的主要内容,如果未能解决你的问题,请参考以下文章
Jquery ajax json 不执行success的原因 坑爹
jquery 使用ajax,正常返回后,不执行success的问题
在 Laravel 4 中从 Jquery Ajax Json 中检索值