using ajax to query sql

时间:2018-01-31 作者:Ginso

我尝试改编本教程:

https://kyokasuigetsu25.wordpress.com/2011/02/02/dynamically-load-mysql-data-using-jquery-and-php/

对于我的插件。当我没工作的时候,我在wordpress上读到了你用过的jQuery 而不是$ 并使用wp_enqueue_script( \'jquery\');因此,我在主php中尝试了以下代码:

add_action(\'wp_enqueue_scripts\', \'callback_for_setting_up_scripts\');
function callback_for_setting_up_scripts() {
    wp_register_style( \'mein-plugin\', plugins_url( \'style.css\', __FILE__ ) );
    wp_enqueue_style( \'mein-plugin\' );
    wp_enqueue_script( \'jquery\');
}



function sqlTest() {


    return \'<input type="text" id="inp" name="inp"/></span>
            <div class="results"></div>
            <script type="text/javascript">
                jQuery(function(){

                    jQuery(\\\'#inp\\\').keyup(function(){
                        var inpval= jQuery(\\\'#inp\\\').val();
                        jQuery.ajax({
                            type: \\\'POST\\\',  
                            data: ({p : inpval}),
                            url: \\\'sql.php\\\',
                            success: function(data) {
                                 jQuery(\\\'.results\\\').html(data); 
                         });
                    });

                });
            </script>\';
}

add_shortcode("sql", "sqlTest");
和我的sql。php如下所示:

<?php

$name=$_POST[\'p\'];
$query=mysql_query("SELECT * FROM " . $table);
while($row=mysql_fetch_assoc($query)){
    $row[\'user_login\'];
}

?>
(我知道当前的查询独立于用户输入)现在,[sql]生成一个输入字段,但当我输入某个内容时,什么都不会发生。我做错了什么?

抱歉,我是wordpress、jquery和ajax的新手

1 个回复
SO网友:Maxim Sarandi

See documentation

WordPress拥有管理ajax。wp includes/folder中的php文件。输入数据参数action 并创建挂钩:

add_action(\'wp_ajax_{your_action}\', \'handler\');
add_action(\'wp_ajax_nopriv_{your_action}\', \'handler\');
ajax。url参数可以通过使用wp_localize_script(\'YOUR SCRIPT handle\', \'ajax\', array(\'url\'=> admin_url(\'admin-ajax.php\')))

所有代码必须如下所示:

add_action( \'wp_enqueue_scripts\', \'callback_for_setting_up_scripts\' );
function callback_for_setting_up_scripts() {
    wp_register_style( \'mein-plugin\', plugins_url( \'style.css\', __FILE__ ) );
    wp_enqueue_style( \'mein-plugin\' );
    wp_enqueue_script( \'ajax-sender\', plugins_url( \'ajax-sender.js\', __FILE__ ), array( \'jquery\' ), null, true );
    wp_localize_script( \'ajax-sender\', \'ajax\', array(
        \'url\'   => admin_url( \'admin-ajax.php\' ),
        \'nonce\' => wp_create_nonce( \'my_nonce\' ),
    ) );
} 
Javascript文件:

jQuery(function () {
    jQuery(\'#inp\').keyup(function () {
        var inpval = jQuery(\'#inp\').val();
        jQuery.ajax({
            type: \'POST\',
            data: {
                action: \'simple_wordpress_ajax\',
                nonce: ajax.my_nonce,
                p: inpval
            },
            url: ajax.url,
            success: function (data) {
                jQuery(\'.results\').html(data.html);
            }
        });
    });
});
和在php文件中

add_action(\'wp_ajax_simple_wordpress_ajax\', \'simple_ajax_handler\');
add_action(\'wp_ajax_nopriv_simple_wordpress_ajax\', \'simple_ajax_handler\');

function simple-wordpress-ajax(){
    check_ajax_referer(\'my_nonce\', \'nonce\', true);
    // your php code

    $return = array(\'html\' => \'test\'); // your data for return
    wp_send_json_success($return);
}
像这样的。

结束