如何从数据库查询中获取php文件中的数组数据以在ajax成功数据中返回

3
我正在尝试从SQL查询中获取数组数据,并将其传递到ajax成功数据中。这是我尝试过的代码:
function adminchecksub(value1){
//alert('hi');
var value1=$('#adminsid').val();
//alert(value1);
if(value1==''){
alert('Please enter a Sub id');
}
else{
//alert(value1);
 $.ajax({

                                        type: 'POST',
                                        url: root_url + '/services/services.php?method=adminsubcheck',
                                        data: {value1:value1},
                                        async: true,
                                        success: function (data) {
                                                alert(data);

                                                if (data == 1) {
                                                        alert('inside');
                                                        //window.location.assign(rdurl+"?sid="+sid);
                                                        return true;
                                                } else {
                                                        //alert('does not exist!');
                                                       //alert('outside');
                                                        return false;
                                                }

                                        }
                                });
}

现在在来自上面的ajax调用的php方法中,我必须得到由此函数返回的数据,该函数返回一个数组

   function adminsubcheck($sid){
$subid=$sid['value1'];
$row = array();
//echo $subid;
$query = "SELECT Sub_id,Status,Sub_type FROM Sub WHERE Sub_id=$subid";        
        //echo $query;
        //echo $subid;
        $queryresult = mysql_query($query);
        $count  = mysql_num_rows($queryresult);
         //echo $count;

         while ($r = mysql_fetch_assoc($queryresult)) {

           $row[] = $r;
        } 
        return $row;

}

在这里,$row将作为一个数组返回给ajax函数的数据,我需要单独获取所有项。请有人帮助我将这些值传递给ajax调用。提前致谢。
3个回答

0
return $row;

替换成这样

echo json_encode($row);

在ajax中加入dataType='json',像这样

dataType: 'json',

0
如果你想在ajax调用中获取值,我认为应该是这样的:

    while ($r = mysql_fetch_assoc($queryresult)) {
       $row[] = $r;
    }

    echo json_encode(array('data'=>$row));
    exit;

0
在你的 PHP 文件中,你可以通过以下方式将数组作为 JSON 对象返回(注意 PHP 文件如何 echo 结果以将其传回 JavaScript):
...
$json = json_encode($row);
echo $json

现在将以下内容添加到您的JavaScript Ajax中

 $.ajax({

...
 // Whatever code you currently have
...

}).done(function ( json ) {

    var data = JSON.parse(json);

    //Continue with javascript
});

你可以像在PHP中一样处理JavaScript变量"data",将其视为关联数组。

此外,看看如何填充PHP变量"$row"并进行以下调整:

$cnt = 0;
while ($r = mysql_fetch_assoc($queryresult)) {

        $row[$cnt] = $r;
        $cnt++;

} 
 $json = json_encode($row);
    echo $json;

在 JavaScript 中,您可以通过 data 变量以以下方式访问行:

var value = data[0]['field_name'];

在上述语句中,0将对应于$cnt的值(即mysql返回的行数)。

谢谢你的回答,它真的帮了我很多。但是我想从数据中获取值,我尝试了这样做,将这些值存储到JS变量中,但需要这样做: success: function (data){ var value2=data['sub_type']; var value3=data['status']; if (value2 == "PTC" && value3!=""){ alert(value2); alert(value3); window.location.assign(root_url+"/public/'+value2'/id="+value1); return true; } 这会把我带到“public/'+value2'/id=30”。 这里value2没有打印为PTC,我该如何将这些值传递到URL中? - xyz9999
在 PHP 中,看看你是如何填充变量 $row 的,我现在正在更新我的答案以帮助解释。 - Tucker
请提供任何建议,以便我将从数据传递到ajax的值分配给变量,以便我需要使用window.location.assign('使用这些值')重新定位页面。 - xyz9999
我不太明白这个问题……? - Tucker
谢谢您的帮助,我得到了所需的东西。如果我在后续过程中有任何疑问,我会再向您请教的。非常感谢。 - xyz9999

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接