我使用json_encode通过ajax将数据从php发送回jquery。
我注意到 jquery 只允许我们在 php 中使用 ONE echo。
如果我使用 echo json_encode($array);.... 然后再使用 echo json_encode($array2);在同一个 php 文件中,那么它就不起作用。
或者如果我使用 echo json_encode($array);然后另一个回声“你好”;然后它也停止工作。
我说得对吗?
问题是当我使用
时$users = mysqli_fetch_assoc($login_user_result);
在ajax中调用php文件与
一起echo json_encode($array);
这不起作用。它正确发送了 $array,但由于上面的行而与一堆其他代码一起发送。
但我必须使用 mysqli_fetch_assoc 从数据库获取数据。
解决这个问题的方法是什么?
编辑:这是我使用的ajax调用:
$.ajax({
url: "static/js/ajaxcall_login.php",
type: "POST",
data:
{
username: $("#login_box .username").val(),
password: $("#login_box .password").val()
},
dataType: "json",
success: function(data)
{
................
}
)};
我没有发现您的 Ajax 请求有任何问题。
这是测试代码,它运行得很好......
要求:
$(document).ready(function() {
$.ajax({
url: "json.php",
type: "POST",
dataType: "json",
success: function(data) {
alert(data);
}
});
});
来源:
$arr1 = array(3.14, 123, "foo");
$arr2 = array("one", "two", "three");
$arr = array_merge($arr1, $arr2);
echo json_encode($arr);
只有一件事需要注意...
如果在 jQuery Ajax 请求中将 dataType 设置为 json,则 respnse (echo) 必须是合格的 JSON。 这就是为什么你不能回应另一个 字符串和 JSON。
如果我使用 echo json_encode($array);.... 然后又是一个回声 json_encode($array2);在里面 相同的 php 文件,那么它将无法工作。
您需要在 json 编码之前合并两个数组。
我注意到jquery只允许 我们在 php 中使用 ONE echo。
不是真的,如果您下载并检查 jQuery Autocomplete Plugin 演示,您将看到它在循环内使用了多个 echo。
你能展示一下你的 jQuery 代码吗?似乎您没有在 Ajax 请求中正确定义数据类型。请检查一下。
JSON 具有特定的语法,如果输出不同的值,该语法就会被损坏。
例如:
$a = array('a', 'b', 'c');
echo json_encode($a);
会给你:
(['a','b','c'])
...在 javascript 中被解释为数组。如果你这样做了
$a = array('a', 'b', 'c');
echo json_encode($a);
echo "Hello";
然后会打印出:
(['a','b','c'])hello
这会导致解析问题。
要打印两个数组,请创建一个包含这两个数组的结构:
$a = array();
$b = array();
$c = array('first' => $a, 'second' => $b);
echo json_encode($c);