【发布时间】:2014-10-25 20:55:24
【问题描述】:
您好,我正在尝试制作 HTML 表单,并且需要在执行表单操作之前对其进行验证。但是 AJAX 响应总是返回空白消息?
$(function(){
$("#ajax-payment-form input[type='submit']").click(function(e) {
// Prevent form submission
e.preventDefault();
// Serialize data, make AJAX call
var str = $(this).serialize();
$.ajax({
type: "POST",
url: templateDir+"/payment_form/payment_process.php",
data: str,
context: this
}).done(function(msg) {
if(msg == 'OK') {
console.log('Validation passed, will submit form');
$(this).closest('form').submit();
} else {
console.log(msg);
}
}).fail(function() {
// Catch ajax errors here
console.log('AJAX error');
});
});
});
PHP:
$post = (!empty($_POST)) ? true : false;
if ($post) {
$orderid = stripslashes($_POST['orderid']);
$amount = stripslashes($_POST['amount']);
$betingelser = stripslashes($_POST['betingelser']);
$error = ''; // Check ordreid
if (!$orderid) {
$error. = 'Venligst indtast dit ordreid.<br />';
} // Check amount
if (!$amount) {
$error. = 'Venligst indtast et beløb.<br />';
}
if (!$error) {
echo 'OK';
} else {
echo '<div class="notification_error">'.$error.
'</div>';
}
}
谁能告诉我哪里错了?
【问题讨论】:
-
你能给我看看你的payment_process.php的php代码吗
-
成功被弃用?
-
@AbdulBasit 是的,这里是:$post = (!empty($_POST)) ?真假; if($post) { $orderid = stripslashes($_POST['orderid']); $amount = stripslashes($_POST['amount']); $betingelser = stripslashes($_POST['betingelser']); $错误 = ''; // 检查 ordreid if(!$orderid) { $error .= 'Venligst indtast dit ordreid.
'; } // 检查金额 if(!$amount) { $error .= 'Venligst indtast et beløb.
'; } if(!$error) { echo 'OK'; } else { echo ''.$error.''; } } -
@thar 是的,我知道,我告诉你忽略 console.log 并实际检查 AJAX 请求和响应。如果你这样做了,你可能会马上发现问题。
-
这里:developer.chrome.com/devtools/docs/network 这是您应该用来诊断 AJAX 问题的东西。您可以看到请求,包括所有数据和标头,并且响应与服务器呈现的完全相同。在您假设问题出在处理您的响应的 JavaScript 中之前,您应该检查发出 request 的 JavaScript。
标签: javascript jquery html ajax validation