发回json字符串有echo问题

问题描述 投票:0回答:3

我使用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)
            {
                 ................
            }
        )};
php jquery json ajax
3个回答
2
投票

我没有发现您的 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。


1
投票

如果我使用 echo json_encode($array);.... 然后又是一个回声 json_encode($array2);在里面 相同的 php 文件,那么它将无法工作。

您需要在 json 编码之前合并两个数组。

我注意到jquery只允许 我们在 php 中使用 ONE echo。

不是真的,如果您下载并检查 jQuery Autocomplete Plugin 演示,您将看到它在循环内使用了多个 echo。

你能展示一下你的 jQuery 代码吗?似乎您没有在 Ajax 请求中正确定义数据类型。请检查一下。


1
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.