使用Ajax在wordpress数据库中存储html内容

时间:2016-11-22 12:14:18

标签: php jquery html ajax

我制作了一个wordpress插件,其中有几个div。 我正在尝试使用下面的代码获取div的内容。

var arhive = j( "div.page2" ).html();
                    console.log(arhive); 

工作正常,问题是当我尝试将其发送到服务器以使用新内容更新数据库时。

j.ajax({
    url: "send_data.php",
    type: "post",
    data: {html: arhive} ,
    success: function (response) {
       // you will get response from your php page (what you echo or print)                 
        console.log("success");
    },
    error: function(jqXHR, textStatus, errorThrown) {
       console.log(textStatus, errorThrown);
    }
});

这是我的send_data.php文件的内容。

$var = $_POST["html"];



$my_post = array(
      'ID'           => 4137,
      'post_content' => '$var',
  );

// Update the post into the database
wp_update_post( $my_post);
echo "success";

我不知道为什么但我得到500错误,数据没有存储,任何想法可能导致这个?

This is the error I get

1 个答案:

答案 0 :(得分:1)

您可以设置wordpress操作来处理AJAX调用,然后使用数据将它们存储到数据库中:

插件中存储已发布数据的Wordpress操作

add_action( 'wp_ajax_my_plugin_ajax_store', 'my_plugin_ajax_store_callback' );

function my_plugin_ajax_store_callback() {
    $whatever_data = $_POST['whatever'];

    global $wpdb; // this is how you get access to the database
    $wpdb->insert("wp_plugin_table", array(
        "whatever" => $whatever_data,
    ));

    echo 'Stored: '.$whatever_data;

    wp_die(); // this is required to terminate immediately and return a proper response
}

您可以像这样设置ajax调用

jQuery(document).ready(function($) {
    var data = {
        'action': 'my_plugin_ajax_store',
        'whatever': 1234
    };

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    jQuery.post(ajaxurl, data, function(response) {
        alert('Got this from the server: ' + response);
    });
});

有关wordpress ajax调用的更多信息,请参阅此处AJAX in Plugins