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

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 @ (index):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!!");

}

超文本标记语言


去!


编辑1


根据建议我已更新如下:


Java脚本语言


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')));


编辑 1 到位后,我还收到错误 - 注意:wp_localize_script 被错误地调用。在 wp_enqueue_scripts、admin_enqueue_scripts 或 login_enqueue_scripts 挂钩之前,不应注册或排队脚本和样式。该通知是由 wait list_update 句柄触发的。请参阅 WordPress 中的调试以获取更多信息。www.xyz.com/wp-includes/functions.php第 5225 行。我一定是误解了建议中的某些内容。


慕的地8271018
浏览 33回答 1
1回答

慕森卡

问题应该出在 URL 上,我认为它必须是绝对的。jQuery.ajax({    //....    url: 'http://yourwebsite.com/wp-content/themes/yummy/update-waitlist.php'    // ...WordPress 的方式您必须先将 JS 文件script.js排入队列handle ,然后再进行本地化本地化脚本以传递通用数据。我们将传递ajax_urlwithmy_ajax对象。函数.phpwp_localize_script('your-script-handle', 'my_ajax', array('ajax_url' => admin_url('admin-ajax.php')));然后在脚本文件中,您可以使用该my_ajax对象来获取 AJAX URL。定义一个function_1在请求此 AJAX 调用时将执行的操作。脚本.jsjQuery.ajax({    type: 'post',    url: my_ajax.ajax_url,    data: {      action: 'function_1',    }    success: function(data){        // callback function    }});定义一个函数并将其附加到 Ajax 操作,该操作将查询数据库并返回结果。函数.phpadd_action('wp_ajax_function_1', 'function_to_execute_some_query'); // logged in user can make a calladd_action('wp_ajax_nopriv_function_1', 'function_to_execute_some_query'); // non logged in user can make a callfunction function_to_execute_some_query() {    global $wpdb;    $results = $wpdb->query( $wpdb->prepare("UPDATE 'wp_wpdatatable_4' SET `currentstatus` =     'myupdate1' WHERE wdt_ID = '1'"));    die($results);}
打开App,查看更多内容
随时随地看视频慕课网APP