我有一个小联系表单,我想要求用户计算并输入正确的值以防止垃圾邮件。现在,当单击发送按钮时,我会触发一个php脚本,在那里我更改计算值。我想回应这些价值观,并将它们显示为新的占位符,既包括成功,也包括失败。
$("#send_button").click(function() {
var url = "contact.php"; // the script where you handle the form input.
$.ajax({
type: "POST",
url: url,
data: $("#contact_form").serialize(), // serializes the form's elements.
success: function(data)
{
var txt = "<?php echo 'Spam protection: Calculate ($first_num + $second_num) x $multiplier';?>";
$("#form_info_label").css('color','#0ed68d');
$("#form_info_label").text(data);
$("#user_answer").attr("placeholder",txt);
},
error: function(data) {
var txt = "<?php echo 'Spam protection: Calculate ($first_num + $second_num) x $multiplier';?>";
alert(txt);
$("#form_info_label").css('color','#f2275e');
$("#form_info_label").text("Error. Please try again.");
$("#user_answer").removeAttr('value');
$("#user_answer").attr("placeholder",txt);
}
});
return false; // avoid to execute the actual submit of the form.
});
然而,我的占位符最终没有将其解释为php代码,而只是简单地复制文本。所以我的占位符最后显示:
<?php echo 'Spam protection: Calculate ($first_num + $second_num) x $multiplier';?>
答案 0 :(得分:1)
我最终返回一个json编码的数组,将我想要的值从php返回到javascript并在那里解析响应。
答案 1 :(得分:0)
你需要PHP标签
var txt = "<?php echo 'Spam protection: Calculate ($first_num + $second_num) x $multiplier'; ?>";
你真的在错误处理程序中拥有它,所以你可能只是忘了,现在你已经编辑了问题以包含它们?
如果你有PHP标签,并且它仍然没有被解析,那么javascript所在的文件不会被PHP解析。
答案 2 :(得分:0)
请记住,在comuputers上使用*表示乘法,而不是x。
并且还不清楚,你的函数“Calculate($ param)”是做什么的,但是通常你不需要一个函数来将一个变量添加到另一个变量。但括号仍然需要......
答案 3 :(得分:0)
在我的情况下,PHP标签也没有被js解释。我找到的解决方案是:
在我的php文件中,我在不可见的div中定义了变量:
?>
<div id="first_num" style="display: none">
<?php echo $first_num; ?>
</div>
<?php
在jquery文件中,我读取了这样的div值:
var first_num= $("#first_num").text().trim();
答案 4 :(得分:-1)
首先,adeneo已经说过:.js文件不会被PHP解析。
其次PHP变量在单引号字符串中出现时不会被扩展。 http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single
您应该使用双引号或
echo 'Spam protection: Calculate ('.$first_num.' + '.$second_num.') x '.$multiplier;