无法将数组从 php 函数返回到 ajax 请求

马诺斯·库内拉基斯

我有一个 javascript 文件,我在其中执行 ajax 请求foo.php以获取 mysql 结果数组。这是我的 javascript 文件。

//foo.js
$(document).ready(function(){
    $.ajax({
        url:"foo.php",
        type:"POST",
        data:{
            action:"test",
            remail:"foo"
        },
        success:function(data){
            var messages = data;
            console.log("Ext req");
            try{
                console.log(JSON.parse(data));
            }catch(e){
                console.log(data);
            }
        },
        failure:function(){

        }
    })
});

为了从 php 接收我的结果数组,我执行以下操作:

//foo.php
<?php 
    if(isset($_POST)){
        $action = $_POST['action'];
        if(empty($action)){
            return;
        }
        switch($action){
            case "test":
                $query = "select * from message where seen";
                $ar = [];
                $res = mysqli_query($con,$query);
                while($row = mysqli_fetch_array($res)){
                    $ar[] = $row;

                }
               echo json_encode($ar);
            break;
        }
    }            
?>

这会向我的 ajax 请求返回一个对象数组,然后我可以根据需要进行处理。但是,如果我尝试将 switch 语句中的 php 代码移动到一个函数中并返回该函数的编码结果,我只会得到一个空数组作为响应。这是我尝试这样做的方法:

<?php 
    function test(){
        $query = "select * from message where seen";
        $ar = [];
        $res = mysqli_query($con,$query);
        while($row = mysqli_fetch_array($res)){
            $ar[] = $row;
        }
        return $ar;
    }
    if(isset($_POST)){
        $action = $_POST['action'];
        if(empty($action)){
            return;
        }
        switch($action){
            case "test":
                $result = test();
               echo json_encode($result);
            break;
        }
    }            
?>

任何想法为什么会发生这种情况?

更新

$con 是来自另一个文件的变量,我 include

萨米尔

当您将查询逻辑移动到函数中时$con,MySQL 的连接对象不可用。GLOBAL $con;在您的函数中使用

阅读本文以了解变量范围

方法一使用GLOBAL关键字

function test(){
    GLOBAL $con;

    $query = "select * from message where seen";
    $ar = [];
    $res = mysqli_query($con,$query);
    while($row = mysqli_fetch_array($res)){
        $ar[] = $row;
    }
    return $ar;
}

方法 2将参数传递给函数

function test($con){
    $query = "select * from message where seen";
    $ar = [];
    $res = mysqli_query($con,$query);
    while($row = mysqli_fetch_array($res)){
        $ar[] = $row;
    }
    return $ar;
}

Call it like this:

test($con);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数据从 PHP 返回到 ajax 函数

来自分类Dev

将数组从 PHP 返回到 jQuery 从 Ajax

来自分类Dev

将 PHP 获取数组数据推送到 ajax 请求并返回

来自分类Dev

将PHP数组返回到javascript wihout Ajax,可能吗?

来自分类Dev

从php文件将json返回到ajax

来自分类Dev

PHP FFI-将数组Rust函数返回到PHP

来自分类Dev

ajax请求无法与php通信

来自分类Dev

Ajax请求PHP返回HTML

来自分类Dev

无法将函数绑定到 ajax 请求

来自分类Dev

Ajax请求返回空数组

来自分类Dev

如何使用AJAX将PHP响应返回到HTML页面

来自分类Dev

使用ajax将mysql结果返回到php

来自分类Dev

在脚本完成之前将响应从php返回到ajax

来自分类Dev

将值从arraylist返回到ajax成功函数

来自分类Dev

将jquery ajax done函数生成的数据返回到变量

来自分类Dev

无法将jQuery ajax()请求发送到php

来自分类Dev

如何从PHP函数运行JavaScript AJAX请求?

来自分类Dev

通过Ajax请求调用php函数

来自分类Dev

来自PHP函数的多个ajax请求结果

来自分类Dev

PHP无法从Ajax请求中接收参数

来自分类Dev

PHP:对PHP的AJAX请求

来自分类Dev

如何将数组从php返回到javascript中的ajax响应

来自分类Dev

对 PHP 的 jQuery AJAX 请求返回错误 500

来自分类Dev

我可以通过Ajax请求将MVC控制器中的javascript返回到View吗?

来自分类Dev

将JSON结果返回到Ajax请求的MVC ErrorHandling属性仅在localhost上有效

来自分类Dev

使用jQuery.ajax请求将对象数组发送到PHP函数

来自分类Dev

对php对象的ajax请求

来自分类Dev

php函数将空json返回Ajax

来自分类Dev

PHP函数将多个数组值返回到字符串

Related 相关文章

热门标签

归档