javascript - 如何在 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 获得明确的答案?谢谢你。
解决方案
推荐阅读
- apache-kafka - Kafka - 独立服务器 - 如何决定分区?
- laravel - 为什么我在 laravel 8 登录后无法重定向到家?
- r - 代理背后的 RSelenium 仅获得 NA
- laravel - 如何防止在 Laravel 中公开访问文件?
- php - PHP - 有没有办法从 switch case 到 default?
- angular - Froala 外部工具栏容器在销毁后未初始化
- solidity - 获取用户 ID 并将其保存在函数中 - Solidity Beginner
- flutter - 有没有办法在外部应用程序(如 Mx 播放器)或颤振项目中的任何其他应用程序中打开视频?
- python - 无法在 discord.py 中导入 main
- php - 在 php 中搜索 json 文件的最佳方法是什么?