当单击此按钮时,我如何说服它执行某些操作?

时间:2014-06-04 作者:RaneWrites

我正在尝试使用ajax在单击按钮时发出警报。最终,我希望它能够进行一些表单验证,但现在我很高兴看到警报。

我已经阅读了文档和十几个类似的问题,但由于某种原因,我仍然无法让我的版本正常工作。

我希望其他人能看到我丢失的东西。

这就是我所拥有的:

// In the php files

add_action( \'wp_ajax_ecbs_validate_data\', \'ecbs_validate_data\' );

add_action( \'in_admin_header\', \'my_ajax_button\' );

function my_ajax_button()
{
    // This gets echoed to a form in another function
    return \'<button id="ecbs-submit" type="button" value="Submit" class="button-primary">Submit</button>\';
}

// In the .js file

// Do something when button is clicked?
$j("#ecbs-submit").on(\'click\', function() {
    try {
        alert(\'something is happening\');
        $j.post(ajaxurl, {
            action: \'ecbs_validate_data\',
            dataType: \'json\',
            success: function(data) {
                //data returned from php
                alert(\'success\');
            }
        });
    }
    catch (err) {
        alert(err);
    }
});
我假设由于警报没有发生,脚本根本没有被调用。

不过,上面的JavaScript并不是文件中的唯一内容。这是全文:可能是冲突?

var $j = jQuery.noConflict();
$j(document).ready(function() {

    // Updates the $ecbs-eit-area div when a template is 
    // selected from a drop box.
    $j("#ecbs_styles").change(function() {
        var str = "";
        $j("#ecbs_styles option:selected").each(function() {
            str = $j("#ecbs_styles").val();
            //if (str !== \'dummy\')
            //{
            try {
                $j.post(ajaxurl, {
                    data: {template: str},
                    action: \'ecbs_populate_admin_template\'
                }, function(response) {
                    $j("#ecbs-edit-area").html(response);
                }
                );
            }
            catch (err) {
                alert(err);
            }
        });
    })
            .change();

    // Do something when button is clicked?
    $j("#ecbs-submit").on(\'click\', function() {
        try {
            alert(\'something is happening\');
            $j.post(ajaxurl, {
            action: \'ecbs_validate_data\',
            dataType: \'json\',
            success: function(data) {
                //data returned from php
                alert(\'success\');
            }
        });
        }
        catch (err) {
            alert(err);
        }
    });
});
如果你好奇的话ecbs_validate_data() 是:

function ecbs_validate_data()
{
    die (\'something happened\');
}
情节越来越复杂!我创建了另一个按钮,并将我的javascript更改为使用该按钮,它可以正常工作。我还得再玩一玩,看看能不能弄清楚交易是什么。

啊哈!当按钮位于编辑区div内时,它不起作用,但当我将其放置在编辑区div外的任何位置时,它起作用。我终于有了点收获。

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

因此,如果有人有同样的问题,我认为这就是问题所在:

在用户从下拉框中选择一个选项之前,我将按钮隐藏在一个div中。我认为问题在于ajax脚本没有与按钮连接,因为最初加载页面和脚本时按钮不存在。如果这有意义的话。我更改了它,使按钮位于页面的另一部分,并在页面加载后隐藏,现在它工作得很好。

结束

相关推荐

函数不会使用AJAX在onClick上运行

好的,我的代码是要使用下面的jquery代码从函数中提取出来的,但它没有提取代码,我看不出为什么不能。我的页面代码<script> var click_to_choose_user = function(){ jQuery.ajax({ type: \"POST\", url: ajaxurl, data: \"action=twitchuser\", success: function(msg){ j