【发布时间】:2020-09-16 01:00:37
【问题描述】:
jquery.js?ver=1.12.4-wp:4
POST https://xyz/update.php 500(内部服务器错误)
发送@jquery.js?ver=1.12.4-wp:4
ajax@jquery.js?ver=1.12.4-wp:4 myFunction@6011c7fbf.min.js?ver=1600216310:3 onclick@(索引):453
我从控制台收到 500 错误。我不知道错误是在我的 PHP 中尝试更新行还是其他地方。
PHP 包含在我的 update-file.php 文件中
function function_1() {
global $wpdb;
$wpdb->query( $wpdb->prepare("UPDATE 'my_table_name' SET `currentstatus` = 'myupdate1' WHERE ID = '1'"));
}
JAVASCRIPT包含在页面中
function myFunction() {
jQuery.ajax({
type: 'post',
url: '/wp-content/themes/yummy/update-file.php',
success: function(data){
// callback function
}
});
alert("I've been clicked!!");
}
HTML
去吧!
编辑 1
根据我更新的建议:
JAVASCIPT
jQuery.ajax({
type: 'post',
url: my_ajax.ajax_url,
action: 'function_1',
success: function(data){
// callback function
}
});
认为上述不正确我也尝试过:
jQuery.ajax({
type: 'post',
url: my_ajax.https://myurl.com/wp-content/themes/yummy/update-waitinglist.php, // this is the location of the update php below
action: 'function_1',
success: function(data){
// callback function
}
});
PHP 包含在我的 update-file.php 文件中
add_action('wp_ajax_function_1', 'myfunctionname'); // logged in user can make a call
add_action('wp_ajax_nopriv_function_1', 'myfunctionname'); // non logged in user can make a call
function myfunctionname() {
global $wpdb;
$results = $wpdb->query( $wpdb->prepare("UPDATE 'my_table_name' SET `currentstatus` = 'myupdate1' WHERE ID = '1'"));
die($results);
}
添加到函数文件 wp_localize_script('myfunctionname', 'my_ajax', array('ajax_url' => admin_url('admin-ajax.php')));
使用 EDIT 1 后,我也会收到一个错误 - 注意:wp_localize_script 调用不正确。在 wp_enqueue_scripts、admin_enqueue_scripts 或 login_enqueue_scripts 挂钩之前,不应注册或排队脚本和样式。此通知由等待 list_update 句柄触发。有关更多信息,请参阅 WordPress 中的调试。 www.xyz.com/wp-includes/functions.php 在线 5225 。我一定误解了建议中的某些内容。
EDIT 2 其他一切正常,但按钮似乎没有更新任何内容。
函数文件中的 PHP -
function my_scripts() {
wp_enqueue_script( 'waitlist_update_call', get_template_directory_uri().'/assets/js/waitlist_update_call.js', array('jquery'), null, true );
wp_localize_script('waitlist_update_call', 'my_ajax', array('ajax_url' => admin_url('admin-ajax.php')));
echo getcwd();
//calls Waitinglist data and creates table
}
add_action('wp_enqueue_scripts', 'my_scripts');
add_action('wp_ajax_waitlist_update_function', 'waitlist_update_function'); // logged in user can make a call
function waitlist_update_function() {
global $wpdb;
$results = $wpdb->query( $wpdb->prepare("UPDATE 'mytablename' SET `currentstatus` =
'myupdate1' WHERE ID = '1'"));
die($results);
}
JS
// JavaScript Document
function update() {
jQuery.ajax({
type: 'post',
url: my_ajax.ajax_url,
// add your action inside data object
data: {
action: 'waitlist_update_function'
},
success: function(data){
// callback function
}
});
}
HTML 去吧!
【问题讨论】:
-
问题出在服务器上,因为 500 响应意味着服务器端失败 - 检查服务器 (php) 日志是否有错误
-
谢谢。所以我的PHP字符串不行,那是理论吗?
-
我可以看到您正在使用 wordpress。您正在从您的主题文件夹中调用一个文件 - 这是奇怪,而不是应该如何完成。请添加您要使用此代码执行的操作
-
还有你是如何以及从哪里调用这个点击函数的?
-
应该使用 WP AJAX API ,直接发送到主题路径不是一个好主意。在使用
$wpdb之前,您是否在该文件中加载了 wp?
标签: javascript php