php - Ajax:无法读取未定义的属性“类型”
问题描述
谁能帮我解决这个问题?我正在尝试以模态加载 WordPress 帖子(自定义帖子类型)标题/内容,但努力让它正确。我对 php 和 ajax 还很陌生,所以我从不同的教程中挑选了一些代码,并尝试将它们组装在一起。
所以首先我添加一个路径来本地化我的脚本:
wp_localize_script( 'darkam_global', 'openpost', array(
'ajaxurl' => admin_url( 'admin-ajax.php' )
));
这是我的 php 函数的样子:
add_action( 'wp_ajax_nopriv_open_post', 'my_open_post' );
add_action( 'wp_ajax_open_post', 'my_open_post' );
function my_open_post() {
$id = $_GET['id'];
$post = get_post($id);
if($post){
wp_send_json(array('post_title' => $post->post_title, 'post_content' => $post->post_content));
} else {
wp_send_json(array('error' => '1'));
}
wp_die();
}
和我的 jQuery:
( function( $ ) {
var $modalTrigger = $('.js-modal-trigger');
$modalTrigger.click( open_post_js );
function open_post_js(id) {
jQuery.ajax({
url: openpost.ajaxurl,
type: 'POST',
data: {
id: id,
action: 'open_post'
},
success: function( result ) {
alert( result['post_title'] );
}
})
}
} )( jQuery );
当我触发模式时,我得到控制台错误:未捕获的类型错误:无法读取未定义的属性“类型”。警报结果也显示为“未定义”。
任何帮助将不胜感激:)
解决方案
你的 PHP 看起来都不错,问题是id
在你的 JavaScript 中没有分配给它的值。
如果帖子 ID 是被点击元素的数据属性,那么这应该可以工作(假设数据属性被调用data-id
):
( function( $ ) {
var $modalTrigger = $('.js-modal-trigger');
$modalTrigger.click( open_post_js );
function open_post_js() {
var id = $(this).data('id');
jQuery.ajax({
url: openpost.ajaxurl,
type: 'POST',
data: {
id: id,
action: 'open_post'
},
success: function( result ) {
alert( result['post_title'] );
}
})
}
} )( jQuery );
推荐阅读
- node.js - 如何在nodejs中使用sharp调整图像大小然后使用multer上传
- jquery - 我需要获取第一个输入的值,然后添加 +1,然后将总和放在文本字段中
- php - 带有PHP API的crete-react-app中的Axios POST在本地主机上工作,但没有数据进入实时mysql db
- amazon-dynamodb - 我们可以避免在 dynamodb 中进行扫描吗
- r - 从函数返回图形而不绘制它
- java - osweb.servlet.PageNotFound - 没有 GET /WEB-INF/views/welcome.jsp 的映射
- php - 当我想在另一列中获取特定行时如何正确使用连接
- node.js - 无法获取 POST 路由
- python - 如何在 python 中使用 matplotlib 在图像上绘制图形?
- javascript - javascript 仅在 (window.innerWidth < x) 无法调整大小时运行函数