为什么PHP的AJAX GET响应有HTML标签?

时间:2016-12-08 00:18:01

标签: javascript php jquery html ajax

我的回复文字有html标签,导致ERROR触发而不是SUCCESS。我做错了什么?

这是我的HTML代码:

<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <?php
    $response = array(
        "a" => "test");
    echo (json_encode($response);
    ?>
</body>
</html>

这是我的php:

ERROR
(index):28 Status: parsererror
(index):29 errorThrown: SyntaxError: Unexpected token < in JSON at position 0
(index):30 <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        {"a":"test"}    </body>

这是控制台消息:

{{1}}

如果删除dataType:“json”,我会触发,但html标记仍然是响应文本的一部分。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

将数据返回到ajax调用的PHP脚本应该被视为子例程而不是网页。如果您在该脚本中有HTML,它也将作为总响应的一部分发送回浏览器。

因此,请将脚本修改为此,即删除其中的所有HTML

app.controller.article.article_json_api_controller:
    class: '%app.controller.article.article_json_api_controller.class%'
    parent: 'app.service.user.access_controller'
    arguments: 
        - '@app.service.article.doctrine_orm.article_entity.builder'
        - '@app.service.article.doctrine_orm.article_entity.persister'
        - '@app.repository.article.article_repository'
        - '@app.service.article.updater'
        - '@app.service.article.doctrine_orm.article_entity.destroyer'
        - '@app.repository.language.language_repository'
        - '@app.service.article.doctrine_orm.article_section_entity.builder'
        - '@app.service.article.article_section.updater'