我尝试使用 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)
})
控制台输出
关于javascript - 使用ajax将php数组传递给javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44101290/