jquery - WordPress 管理中的 AJAX 响应为空,但浏览器响应不为空
问题描述
我在 wp-admin 中添加了一个自定义页面。除其他外,该页面具有以下脚本:
<script>
(function ($) {
$(document).ready(function() {
$("#mybtn").on("click",function(e) {
$.ajax({
'url': '<?=get_home_url()?>/myscript.php',
'data': {'admin':1},
'datatype': 'json',
'type': 'POST',
'cache': false,
success:function(data) {
console.log(data);
},
error: function (desc, err) {
alert("Details: " + JSON.stringify(desc) + "\nError: " + JSON.stringify(err));
}
});
});
});
})(jQuery);
</script>
当在浏览器检查器的网络选项卡中查看时,脚本的响应不为空 - 取决于后台(服务器)中发生的情况,其内容可能会有所不同,但它始终是 JSON,并且永远不会为空。
但是,该console.log(data)
位显示为undefined
. 我显然做错了什么,但我不知道是什么。有问题的 WP 站点没有缓存插件,通过不同的浏览器和计算机访问 WP 管理,并且总是相同的 - 浏览器看到服务器响应,AJAX 的 console.log 没有。
我也试过用 替换$
,jQuery
但结果是一样的。添加async:true
并且async:false
什么也没做。
我也用myscript.php
这个替换了整个内容:
<?php
echo json_encode(["error"=>1,"message"=>"Failed to update!","start"=>$start,"end"=>date("Y-m-d H:i:s")],JSON_UNESCAPED_UNICODE);
die();
?>
并且仍然有相同的结果 - 浏览器的检查员的响应很好,console.log()
是undefined
.
我究竟做错了什么?
解决方案
您指定的“数据类型”选项应该是“数据类型”(我相信区分大小写)
尝试使用 'contentType' 选项:
内容类型:“应用程序/json;字符集=utf-8”
推荐阅读
- javascript -
活动状态不适用于 React 中的后退浏览器按钮 - tensorflow - 从 tf.data.Dataset.map() 返回数据集导致“TensorSliceDataset”对象没有属性“get_shape”错误
- css - CSS中的颜色算术
- google-cloud-vision - 谷歌云视觉崩溃无异常捕获
- c# - 相同的文件不同的 md5 哈希
- database - 哪个词描述了所有其他人都加入到其中的表?
- php - Kohana 验证 - 为什么我的自定义规则总是返回 true?
- mysql - Mysql基于日期的两种不同的股息算法
- laravel - PhpStorm 令牌不匹配异常中的 PHPUnit 测试
- twitter - 推文回复和通知丢失