首页 > 解决方案 > 如何在 AJAX 响应中获取简单的文本

问题描述

我一直在寻找这个答案,有些帖子有类似的问题,但他们的答案对我不起作用。我的最终目标是根据用户在另一个下拉列表中选择的内容填充下拉列表。经过一些研究,我确定使用 AJAX 是一个好主意,所以我正在逐步学习 AJAX。所以我无法得到一个简单的文本答案,我确实得到了答案,但整个页面 HTML 都附加到了答案中。我将如何使用 AJAX 获得简单明了的文本答案?

这是我的php代码:

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' &&
    isset($_POST["OM"]) && !empty($_POST["OM"])){

    $OM = $_POST["OM"];
    switch($OM) {
        case "CMO": test_function(); break;
    }

}

function test_function(){
    $return = $_POST;
    $return["posto"] = "Sargento";

    $return["json"] = json_encode($return);
    echo json_encode($return);
}
?>

javascript看起来像这样:

$('#om-dropdown').change(function () {
        var id = $(this).val();
        var data = {
            "OM": id
        }
        data = $(this).serialize() + "&" + $.param(data);
        $.ajax({
            type:'POST',
            dataType: "json",
            data: data,
            error: function (xhr, status, error) {
                console.log(arguments);
                console.warn(xhr.responseText)
                alert(" Can't do because: " + error);
            },
            success:function(data){    
                alert("Form submitted successfully.\nReturned json: " + data["json"]);
            }
        });
        return false;
    });

但是,当我执行 javascript 时,AJAX 响应如下:

Arguments(3) [{…}, "parsererror", SyntaxError: Unexpected token < in JSON at position 116

我对该错误进行了一些研究,一位用户怀疑这是因为 AJAX 答案中嵌入了 HTML,因此他建议将其添加console.warn(xhr.responseText)到错误日志中,果然我得到了:

{"account":"CMO","OM":"CMO","posto":"Sargento","json":"{\"account\":\"CMO\",\"OM\":\"CMO\",\"posto\":\"Sargento\"}"}<!DOCTYPE html>
<html>

<head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>ASC | Principal</title>

    <link href="../css/bootstrap.min.css" rel="stylesheet">
    <link href="../font-awesome/css/font-awesome.css" rel="stylesheet">
    [HTML CONTINUES]

但正如您所看到的,我所期待的答案在响应的第一行。如何仅使用 JSON 获得明确的答案?谢谢你。

标签: javascriptphpjqueryajax

解决方案


推荐阅读