AJAX在提交表单时不返回任何内容

时间:2015-04-20 作者:Zeeshan

我在wordpress中工作,在按下submit按钮时,我希望函数通过ajax返回结果,结果应在屏幕上显示为警报。但当我按submit时,什么都没有显示。

下面是我的代码

Ajax代码(ajaxinsert.js文件)

jQuery(document).ready(function(){

////////////////////////////////////////////////////////////
    jQuery("#addimage").submit(function (e) { //form is intercepted
        e.preventDefault();
        //serialize the form which contains secretcode
        var sentdataa = $(this).serializeArray();

        //Add the additional param to the data        
        sentdataa.push({
            name: \'action\',
            value: \'wp_up\'
        })

        //set sentdata as the data to be sent
        jQuery.post(yess.ajaxurl, sentdataa, function (rez) { //start of funciton
            alert(rez);

            return false;
        } //end of function
        ,
        \'html\'); //set the dataType as json, so you will get the parsed data in the callback
    }); // submit end here
});
HTML表单

<form id="addimage" action="" method="post" enctype="multipart/form-data">
<input type="submit" name="upload" style="margin-bottom:15px;">
</form>
PHP代码(我在页面上使用了此代码的快捷码,下面的代码位于functions.PHP文件中):

add_shortcode( \'test\', \'addimage\' );

function wp_up()
{   
echo "zeeshanaslamdurrani";
exit();

}

function addimage(){  

add_action( \'wp_ajax_wp_up\', \'wp_up\' );
add_action( \'wp_ajax_nopriv_wp_up\', \'wp_up\');


// register & enqueue a javascript file called globals.js
wp_register_script( \'globalss\', get_stylesheet_directory_uri() . "/js/ajaxinsert.js", array( \'jquery\' ) ); 
wp_enqueue_script( \'globalss\' );

// use wp_localize_script to pass PHP variables into javascript
wp_localize_script( \'globalss\', \'yess\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
} 

2 个回复
SO网友:cybmeta

短代码太晚了,无法添加ajax操作。此外,只有在执行短代码时才会添加该操作,这在ajax请求中不太可能发生。使代码工作的最快方法是移动add_action 外部addimage() 作用

add_action( \'wp_ajax_wp_up\', \'wp_up\' );
add_action( \'wp_ajax_nopriv_wp_up\', \'wp_up\');
function wp_up() {   
    echo "zeeshanaslamdurrani";
    exit();
}

add_shortcode( \'test\', \'addimage\' );
function addimage(){     

    // register & enqueue a javascript file called globals.js
    wp_register_script( \'globalss\', get_stylesheet_directory_uri() . "/js/ajaxinsert.js", array( \'jquery\' ) ); 
    wp_enqueue_script( \'globalss\' );

    // use wp_localize_script to pass PHP variables into javascript
    wp_localize_script( \'globalss\', \'yess\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
} 
查看您的代码时,您可能还对以下问题感兴趣:Enqueue Scripts / Styles when shortcode is present.

SO网友:Mark Kaplun

您在jquery API调用中指定希望作为响应接收的有效html,但服务器返回的是简单文本而不是html,这可能是jquery决定请求失败的原因。

始终使用browser developer工具查看实际流量,以调试是否发送ajax响应。

结束

相关推荐

由于wp-admin的HTTPS导致AJAX请求中断

我的wp管理部分通过plugin. 我也有在前端使用https的特定页面(登录、计费等)我似乎对使用AJAX到HTTPS进行管理AJAX的HTTP页面有问题。php nonce失败。是否可以将HTTP nonce与HTTPS nonce一起使用?HTTPS到HTTPS工作正常。问题只是HTTP到HTTPS。这是预期的行为吗?我认为没有必要提供任何代码,因为这是相当标准的。感谢您的任何意见