javascript - 使用ajax将php数组传递给javascript

标签 javascript php jquery ajax

我尝试使用 php 从 sql server 获取数组,并使用 ajax 将这些数组解析为 javascript。 但是,我尝试了谷歌的很多解决方案,但无法获取数组。

这是我的 php 代码:

<?php
    include 'Connect.php';
    $Store_int = $_GET['num'];

    $sql = "SELECT * FROM `store` WHERE `Place_int` = " . $Store_int;

    mysqli_select_db($link, "web");
    $link->set_charset("utf8");
    $result = mysqli_query($link, $sql);

    $arr = array();
    while ($row = mysqli_fetch_object($result)) {
        $p = (string)$row->Name;
        $arr[] = $p;
    }
    //print_r($arr);
    $jsonArr = json_encode($arr, JSON_UNESCAPED_UNICODE);
    echo $jsonArr;
    mysqli_free_result($result);
    mysqli_close($link);
?>

php中的数组将编码并显示:

["pen","pencil","apple","cat","dog"]

和 .js 文件

function getArr(store_int) {
    var jsArray = new Array();
    $.ajax({
        url: "fromSQL_store.php",
        data: {
            num: $("#store_int").val()
        },
        type: "GET",
        dataType: "json",
        success: function (data) {
            alert(num);
            jsArray = JSON.parse(data.jsonArr);
        }, error: function (data) {
            alert("123");
        }
    });
    //alert(jsArray.length);
    return jsArray;
}

在 .js 中,我总是会从 php 得到空响应(未定义)。 因为ajax会回答“错误”函数...,错误状态为200。

最佳答案

您的数组将始终返回 undfined,因为 AJAX 调用是异步的,您的函数在设置之前返回 jsArray。并且您不需要 JSON.parse() 因为您已在 ajax 调用中将 dataType 定义为 json 。将函数传递给您的 getArr() 函数并在该函数中使用您的数据。

function getArr(store_int, outputFn){ // what do you use store_int for?
   $.ajax({
       url: "fromSQL_store.php",
       data: {
           num: $("#store_int").val()
       },
       type: "GET",
       dataType: "json",
       success: function(data) {
           outputFn(data)
       },error: function(data){
           alert("123");
       }
   });
}

然后像这样使用它

getArr('5', function (data) {
       console.log(data)
})

控制台输出

enter image description here

关于javascript - 使用ajax将php数组传递给javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44101290/

相关文章:

Jquery Accordion 菜单主动打开

javascript - 我可以发回函数引用作为对 api 请求的响应吗?

javascript - 注册表单验证问题

javascript - 使用动画颜色文本更改前置表格淡入?

javascript - 更改图像顺序并更新数据库

php - 在 CodeIgniter 中使用 .htaccess 强制使用 HTTPS

javascript - Jquery,切片失败时返回什么?

javascript - 翻转 javascript 对象中的键和值,同时保留浮点值

javascript - 通过装饰器执行方法

php - Laravel 4.2 : MYSQL Timeout. 在哪里更改全局时间