我正在尝试使用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外的任何位置时,它起作用。我终于有了点收获。