发回带有回声问题的json字符串

时间:2009-12-07 07:32:30

标签: jquery ajax json

我使用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);

它不起作用。它正确地发送$数组,但由于它上面的行,还有一堆其他代码。

但我必须使用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)
            {
                 ................
            }
        )};

3 个答案:

答案 0 :(得分: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 Request中将dataType设置为 json ,那么   respnse(echo)必须是合格的JSON。   这就是为什么你不能回应另一个   字符串和JSON。

答案 1 :(得分:1)

  

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

在json编码之前你需要merge两个数组。

  

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

不正确,如果你下载并查看jQuery Autocomplete Plugin演示,你会发现在循环中使用了多个echo。

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

答案 2 :(得分: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);