MYSQL单元的javascript、ajax更新出现500错误
jquery.js?ver=1.12.4-wp:4 职位https://xyz/update.php 500(内部服务器错误) send@jquery.js?ver=1.12.4-wp:4 ajax@jquery.js?ver=1.12.4-wp:4 myFunction@6011c7fbf.min.js?版本=1600216310:3 onclick@(索引):453 我从控制台得到一个500以上的错误。我不知道错误是在我的PHP中尝试更新行还是在其他地方 下面的PHP包含在我的update-file.PHP文件中MYSQL单元的javascript、ajax更新出现500错误,javascript,php,Javascript,Php,jquery.js?ver=1.12.4-wp:4 职位https://xyz/update.php 500(内部服务器错误) send@jquery.js?ver=1.12.4-wp:4 ajax@jquery.js?ver=1.12.4-wp:4 myFunction@6011c7fbf.min.js?版本=1600216310:3 onclick@(索引):453 我从控制台得到一个500以上的错误。我不知道错误是在我的PHP中尝试更新行还是在其他地方 下面的PHP包含在我的update-
function function_1() {
global $wpdb;
$wpdb->query( $wpdb->prepare("UPDATE 'my_table_name' SET `currentstatus` = 'myupdate1' WHERE ID = '1'"));
}
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);
}
页面上包含的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文件中
function function_1() {
global $wpdb;
$wpdb->query( $wpdb->prepare("UPDATE 'my_table_name' SET `currentstatus` = 'myupdate1' WHERE ID = '1'"));
}
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_本地化_脚本('myfunctionname','my_ajax',array('ajax_url'=>admin_url('admin-ajax.php'))
使用edit1后,我还收到一个错误通知:wp_localize_脚本调用不正确。在wp\u enqueue\u脚本、admin\u enqueue\u脚本或login\u enqueue\u脚本挂钩之前,不应注册或排队脚本和样式。此通知由等待列表更新句柄触发。有关更多信息,请参阅WordPress中的调试。在线5225。我一定是误解了建议中的某些内容
编辑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
HTML
走 问题应该是URL,我认为它必须是绝对的
jQuery.ajax({
//....
url: 'http://yourwebsite.com/wp-content/themes/yummy/update-waitlist.php'
// ...
WordPress方式
您必须先使用相同的句柄将JS文件script.JS排队
然后在它之后本地化
本地化脚本以传递通用数据。我们将通过my\u ajax
对象传递ajax\u url
functions.php
wp\u localize\u script('your-script-handle','my\u ajax',array('ajax\u url'=>admin\u url('admin-ajax.php'));
然后在脚本文件中,您可以使用my_ajax
对象来获取ajaxurl。定义一个动作函数\u 1
,当请求此AJAX调用时将执行该动作
script.js
jQuery.ajax({
键入:“post”,
url:my_ajax.ajax_url,
数据:{
行动:“功能_1”,
}
成功:功能(数据){
//回调函数
}
});
定义一个函数并将其附加到Ajax操作,该操作将查询数据库并返回结果
functions.php
add_action('wp_ajax_function_1','function_to_execute_some_query');//已登录的用户可以拨打电话
添加操作(“wp\u ajax\u nopriv\u function\u 1”、“function\u to\u execute\u some\u query”);//未登录的用户可以拨打电话
函数函数执行某些查询(){
全球$wpdb;
$results=$wpdb->query($wpdb->prepare(“更新'wp\u wpdatatable\u 4'设置'currentstatus`=
“myupdate1”,其中wdt_ID=“1”);
死亡($结果);
}
问题出在服务器上,因为500响应意味着服务器端失败-请检查服务器(php)日志中的错误记录。所以我的PHP字符串是不好的,那么这是理论吗?我可以看到你正在使用wordpress。您正在从您的主题文件夹调用一个文件-这很奇怪,不应该这样做。请添加您正试图使用此代码执行的操作,以及如何以及从何处调用此单击函数?应使用,而不是直接发送到主题路径。在使用$wpdb
之前,您是否在该文件中加载了wp?非常感谢您的详细回答。我一定是误解了什么,因为按照上面的说明(我想)我得到了一个未捕获的引用错误:我的ajax没有在页面加载上定义,而未捕获的引用错误:myFunction没有在HtmlButtoneElement上定义。OnClick在上面还添加了一个关于脚本的额外错误。@theodore在更新的脚本中,删除my\u ajax.
并仅在单引号中包含文件的整个路径。正如我在上面的回答中所说的,要使用通用数据,我们需要对特定脚本进行本地化&如果没有本地化,它将无法工作。因此,删除my_ajax
,只包含绝对路径。请看我答案的第一部分。要么按照第一个答案,要么用WordPress下面的答案更新所有内容。啊,谢谢。我会试着回去报告。我从字面上理解它,因为上面有人说不要使用整个文件路径。确认它看起来像url:而不是my_ajax.ajax_urlYes,它看起来像您提到的url&而且您不应该使用整个路径。你应该遵循推荐的WordPress方式。