自定义php文件的jQuery AJAX:返回空数据

时间:2015-03-18 作者:ccot

我创建了一个自定义php文件,将其放在我的文件夹中。这些文件将一些数据插入到我创建的自定义表的数据库中。

require wp_path() . "/wp-load.php";
global $wpdb;
$favorite_table = $wpdb->prefix . "fav";
$wpdb->insert( $favorite_table, array( \'link\' => $_POST[\'fav_link\'], \'title\'=> $_POST[\'title\']) );
$lastid = $wpdb->insert_id;

echo $lastid;
function wp_path() {
    if (strstr($_SERVER["SCRIPT_FILENAME"], "/wp-content/")) {
        return preg_replace("/\\/wp-content\\/.*/", "", $_SERVER["SCRIPT_FILENAME"]);
    }
    return preg_replace("/\\/[^\\/]+?\\/themes\\/.*/", "", $_SERVER["SCRIPT_FILENAME"]);
}
调用此php文件的是我的主题中的jquery ajax函数:

$.post(WPURLS.theme_directory_uri+\'/favorite/fav.php\', data).done(function(data ) {
      alert(data);
 }).fail(function() {      
 });
此插入到数据库中,但在响应中不返回任何内容,数据为空。如果我在浏览器(GET)中手动粘贴URL,我可以看到显示的$lastid。

我做错了什么?我需要检索响应数据$lastid。

1 个回复
最合适的回答,由SO网友:Rocker Maruf 整理而成

你走错了路。这会造成困难,不是WORDPRESS标准。Wordpress有一种ajax技术来实现这一点。

从页面调用ajax

<script>
var data = {
    \'action\': \'insert_data_customtable\',
    \'first_name\': firstname,
    \'last_name\': lastname
};

// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php                 
jQuery.ajax({
  type: "POST",
  url: ajaxurl,
  dataType: "json",
  data: data,
  success: function(response) {
    console.log(response);
    ///response will return that you echo in function insert_data_customtable

  },
  error: function(response){
    alert(response);
  }
});

</script>
并将其写入函数中。php

add_action("wp_ajax_nopriv_insert_data_customtable", "insert_data_customtable");
dd_action("wp_ajax_insert_data_customtable", "insert_data_customtable");

function insert_data_customtable(){
    //Here is your code for insert into table
    $insertid=mysql_insert_id();

    echo json_encode($insertid);
    die();
}

结束