【问题标题】:Get Specfic response from MySql in jQuery AJAX Success在 jQuery AJAX Success 中从 MySql 获取特定响应
【发布时间】: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_namedocument_name,以便将这两个值附加到我的列表中。

【问题讨论】:

  • 使用json_encode()将响应返回为JSON,所以可以用Javascript解析。

标签: javascript php jquery mysql ajax


【解决方案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);          
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-26
    • 2016-06-29
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多