Json jQuery 和 php 处理的值不正确
Json jQuery and php doesn't process value's correct
我有:HTML + jQuery + ajax post和一个PHP文件来处理表单值并返回错误(真或假)和带有html标记的消息。
我的JavaScript代码:
$(document).ready(function() {
var form = $('#form'); // contact form
var submit = $('#submit'); // submit button
var alert = $('.alert'); // alert div for show alert message
// form submit event
form.on('submit', function(e) {
e.preventDefault(); // prevent default form submit
$.ajax({
url: 'contact.php', // form action url
type: 'post', // form submit method get/post
dataType: 'json', // request type html/json/xml
data: form.serialize(), // serialize form data
beforeSend: function() {
alert.fadeOut();
submit.html('Sending....'); // change submit button text
},
success: function(result) {
if(result.error){
/* On error stuff */
alert(result.html).fadeIn();
}else{
/* On success stuff */
alert(result.html).fadeIn();
}
}
});
});
});
最后我的PHP:
if( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ){
$result = array("error" => false, "html" => null);
$vars = array('name', 'email','telefoonnummer', 'message');
$verified = TRUE;
foreach($vars as $v) {
if(!isset($_POST[$v]) || empty($_POST[$v])) {
$verified = FALSE;
}
}
if(!$verified) {
$result["error"] = true;
$result["html"] = "<b>Error11</b>";
echo json_encode($result);
exit;
}
$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$tel= filter_var($_POST['telefoonnummer'], FILTER_SANITIZE_STRING);
$message = filter_var($_POST['message'], FILTER_SANITIZE_STRING);
$to = '';
$sent = email($to, $email, $name, $tel, $message);
if ($sent) {
$result["error"] = false;
$result["html"] = "<b>Success</b>";
echo json_encode($result);
} else {
$result["error"] = true;
$result["html"] = "<b>Error</b>";
echo json_encode($result);
}
return;
}
/**
* Email send with headers
*
* @return bool | void
**/
function email($to, $name, $email, $tel, $message){
$header = array();
$header[] = "MIME-Version: 1.0";
$header[] = "From: <".$name."> <".$email.">";
/* Set message content type HTML*/
$header[] = "Content-type:text/html; charset=iso-8859-1";
$header[] = "Content-Transfer-Encoding: 7bit";
if( mail($to, $tel, $message, implode("'r'n", $header)) ) return true;
}
好的..现在很明显我知道错误返回出了问题,它确实出现了,然后在我的html中再次消失,所以我不知道那里到底发生了什么。
我不想要"修复",这样我就可以复制粘贴代码,而是解释发生了什么,出了什么问题以及如何解决它(至少那时我学到了一些东西)
您以两种不同的方式使用alert
...一次作为对象,一次作为函数。后者可能是导致不良影响的原因。仔细看alert
后的括号;
-
alert()
是一个函数 -
alert.
表示它是一个对象
我们不能在警报函数中使用jquery链接方法。
相关文章:
- JQuery $.getJSON() 不能正确处理回调
- 处理“不正确的字符串值”
- 在我的 javascript 项目中获取不正确的值时,将函数作为事件处理程序的回调传递
- Json jQuery 和 php 处理的值不正确
- json对象内部的json处理不正确
- 表单数据中的对象处理不正确
- 在iOS8 Safari中,只读输入处理不正确
- Javascript似乎不能正确处理稍后显示的隐藏元素
- HTML canvas drawImage不能正确处理风景图像
- 为什么我的jQuery .click()回调不能正确处理输入?
- 为什么Mozilla Firefox不能处理正确的jQuery ?
- 奥蕾莉亚——如果.Bind不能正确处理选择或单选按钮值
- Javascript排序不能正确处理字符串
- 处理“不正确”从服务格式化JSON
- 链轮不能正确处理js文件中的动词
- 角度处理不正确的缓存数据
- 事件类型字段的打字稿事件处理程序函数 - 上下文不正确
- Javascript regex不能正确处理邮政编码
- jQuery Mobile:一旦页面发生变化,就不能处理正确的事件
- 为什么IE11对Node.normalize()的负号处理不正确?