如果php文件中有文本,Ajax不会返回json

nas*_*971 1 php ajax jquery json

我是Jquery Ajax的新手,对不起,如果那是一件简单的事情.

所以我的问题是我想从我的php文件中检索一个json对象,但只有当我只回显一个这样的Json对象时它才有效:

<?php
header('Content-type: application/json; charset=utf-8');
$arr = array ('Lastname'=>'Doe','Firstname'=>'John','Age'=>109);
echo json_encode($arr);
Run Code Online (Sandbox Code Playgroud)

当我想在我的javascript文件中回显另一个json或者作为json返回的一些文本时,我从ajax调用中得不到任何回复.

  <?php
// This code doesn't work
    header('Content-type: application/json; charset=utf-8');
    $arr = array ('Lastname'=>'Doe','Firstname'=>'John','Age'=>109);
    echo 'hi there';
    $json = 'Hello people';
    echo json_encode($json);
    echo json_encode($arr); 
Run Code Online (Sandbox Code Playgroud)

我的ajax电话是这样的:

$.ajax({
        url: 'test.php',
        type: 'GET',
        success: function (response) {
            console.log(response);
        }
    });
Run Code Online (Sandbox Code Playgroud)

所以我的最后一个问题是:我的代码有什么问题,以及ajax调用中不允许的内容

Ale*_*sky 6

您只能在响应中放置一个JSON对象.如果您要发送多个内容,只需创建一个数组:

echo json_encode([
    'user' => ['Lastname'=>'Doe', 'Firstname'=>'John', 'Age'=>109],
    'other' => 'some other stuff',
    'more' => ['even', 'more', 'suff'],
]);
Run Code Online (Sandbox Code Playgroud)

您也不希望在JSON之前或之后有任何无关的输出,因此请删除此:

echo 'hi there';
Run Code Online (Sandbox Code Playgroud)