MYSQL单元的javascript、ajax更新出现500错误

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-

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文件中

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方式。