gpt4 book ai didi

php - 在 wordpress 中返回 true 和 false 的 Ajax 函数问题

转载 作者:可可西里 更新时间:2023-11-01 12:18:22 28 4
gpt4 key购买 nike

我正在 WordPress 中使用 ajax 和 jquery 验证表单的正则表达式评论文本区域。但是当我想用 return false 提醒错误消息时出现问题。它可以正常处理无效数据并显示警报并且未提交。但是当我输入有效数据时,表单不会提交。 return false 可能有问题。

我尝试制作变量并存储 true 和 false 并将条件应用于 ajax 成功 block ,但对我不起作用。

当我使用核心 php、ajax、jquery 但在 WordPress 中不工作时,它工作正常。

这是我的 ajax、jquery 代码。

require 'nmp_process.php';

add_action('wp_ajax_nmp_process_ajax', 'nmp_process_func');
add_action('wp_ajax_nopriv_nmp_process_ajax', 'nmp_process_func');

add_action('wp_head', 'no_markup');
function no_markup() {
?>
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery('form').submit(function (e) {
var comment = jQuery('#comment').val();
jQuery.ajax({
method: "POST",
url: '<?php echo admin_url('admin-ajax.php'); ?>',
data: 'action=nmp_process_ajax&comment=' + comment,
success: function (res) {
count = res;
if (count > 10) {
alert("Sorry You Can't Put Code Here.");
return false;
}
}
});
return false;
});
});

</script>
<?php
}

And i'm using wordpress wp_ajax hook.

这是我的 php 代码。

    <?php
function nmp_process_func (){
$comment = $_REQUEST['comment'];
preg_match_all("/(->|;|=|<|>|{|})/", $comment, $matches, PREG_SET_ORDER);
$count = 0;
foreach ($matches as $val) {
$count++;
}
echo $count;
wp_die();
}
?>

提前致谢。

最佳答案

最后还是自己想通了。

只需将 async: false 放在 ajax 调用中。现在它工作正常。另外创建一个空变量并在其中存储 bool 值,然后在 ajax 调用后返回该变量。

这是我之前的代码:

    require 'nmp_process.php';

add_action('wp_ajax_nmp_process_ajax', 'nmp_process_func');
add_action('wp_ajax_nopriv_nmp_process_ajax', 'nmp_process_func');

add_action('wp_head', 'no_markup');
function no_markup() {
?>
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery('form').submit(function (e) {
var comment = jQuery('#comment').val();
jQuery.ajax({
method: "POST",
url: '<?php echo admin_url('admin-ajax.php'); ?>',
data: 'action=nmp_process_ajax&comment=' + comment,
success: function (res) {
count = res;
if (count > 10) {
alert("Sorry You Can't Put Code Here.");
return false;
}
}
});
return false;
});
});

</script>
<?php
}

我解决的问题是,

新代码

var returnval = false;
jQuery.ajax({
method: "POST",
url: '<?php echo admin_url('admin-ajax.php'); ?>',
async: false, // Add this
data: 'action=nmp_process_ajax&comment=' + comment,

我为什么使用它

Async:False 将暂停其余代码的执行。只有在收到 ajax 响应后,才会执行其余代码。

然后像这样简单地将 bool 值存储在变量中,

success: function (res) {
count = res;
if (count > 10) {
alert("Sorry You Can't Put Code Here.");
returnval = false;
} else {
returnval = true;
}
}
});
// Prevent Default Submission Form
return returnval; });

就是这样。

顺便感谢您的回答。

关于php - 在 wordpress 中返回 true 和 false 的 Ajax 函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33797324/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com