所以我有这个php类,其中有一个可以从PSQL数据库获取用户的函数,但AJAX始终在控制台中记录空数组:
<form>
<select name="options">
<option value="option1">A</option>
<option value="option2">B</option>
<option value="option3">C</option>
<option value="option4">D</option>
</select>
</form>
<p>I want the option names (A, B, C) and values (option1, option2, option3)
to be confiurable, <br>sometimes there might be 3 values
sometimes 10, I have no control over this.</p>
我使用phphandler文件从ajax调用函数 :
public function getUsers(){
$query = pg_query(self::$DBH, "select id, name, email, admin from users order by name;");
$result = array();
$i = 0;
while ($row = pg_fetch_row($query)) {
$result[$i] = $row;
$i++;
}
return $result;
}
最后还有AJAX呼叫
<?php
include_once $_SERVER['DOCUMENT_ROOT'].'/bdd.php';
require_once 'modele_backend.php';
$module = new Modele_Backend();
echo json_encode($module -> getUsers());
?>
问题是js一直在控制台中显示空数组。
json_encode可以正常工作,因为json_last_error = 0。
我尝试将getUsers()函数的返回值替换为
$(document).ready(function(){
$("#user_email").on("input", function(){
// Print entered value in a div box
$.ajax({
url: 'modules/mod_backend/backendHandler.php',
type: 'post',
dataType: 'json',
success: function(response) { console.log(response); }
});
});
});
测试该函数是否能够对我的数组进行编码,并且确实在页面上显示为JSON,因此这不是我的数组问题的编码。仍然,当AJAX获得json_encode函数的结果时,它仍显示一个空数组。
感谢您的帮助!
死灵。
答案 0 :(得分:0)
解决方案1 您必须在回显
之前在php文件中设置标头的内容类型header('Content-type: application/json');
解决方案2
将ajax代码中的dataType
更改为html
或将其删除以返回默认值dataType (default: Intelligent Guess (xml, json, script, or html))
,然后使用javascript JSON.parse()方法将返回的字符串转换为json。
答案 1 :(得分:0)
原来是根本不是json_encode的问题,这是我的静态数据库类的问题,但是我两次被AJAX调用包含在内。
仍然感谢您的支持