Javascript jqueryajax响应总是返回空白消息
嗨,我正在尝试制作HTML表单,需要在执行表单操作之前验证它。但是AJAX响应总是返回一条空白消息Javascript jqueryajax响应总是返回空白消息,javascript,jquery,html,ajax,validation,Javascript,Jquery,Html,Ajax,Validation,嗨,我正在尝试制作HTML表单,需要在执行表单操作之前验证它。但是AJAX响应总是返回一条空白消息 $(function(){ $("#ajax-payment-form input[type='submit']").click(function(e) { // Prevent form submission e.preventDefault(); // Serialize data, make AJAX call va
$(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:
谁能告诉我怎么了 在jquery中试试这个:
$.ajax({
type: "POST",
url: templateDir+"/payment_form/payment_process.php",
data: str,
context: this,
success: function(msg){
if(msg == 'OK') {
console.log('Validation passed, will submit form');
$(this).closest('form').submit();
}
else {
console.log(msg);
}
}
error: function(msg){
// if call fails or any error occurs
}
});
您位于提交按钮的单击处理程序中。您正在调用$this.serialize,这里是提交按钮。在submit按钮上调用serialize将返回一个空字符串
因此,您没有向服务器传递任何数据。服务器端要做的第一件事是检查空的$\u POST,如果$POST为false,则不会执行任何服务器端代码
您需要序列化表单,而不是“提交”按钮
一个简单的解决方案是序列化表单本身
str = $('"#ajax-payment-form').serialize()
但实际上,更大的问题是,您绑定到的是“提交”按钮的单击,而不是表单本身上的“提交”事件
而不是这种相当复杂的处理表单提交的方式
$("#ajax-payment-form input[type='submit']").click(function(e) {
只要这样做:
$("#ajax-payment-form").submit(function (e) {
你能给我看一下你的支付php代码吗?\u process.phpsucess不推荐使用?@AbdulBasit yes here:$post=!空的$邮政?真:假;如果$post{$orderid=stripslashes$\U post['orderid'];$amount=stripslashes$\U post['amount'];$betingelser=stripslashes$\U post['betingelser'];$error=;//检查ordreid if!$orderid{$error.='Venligst indtast dit ordreid.}//检查金额if!$amount{$amount.='Venligst indtast et belø如果!$error{echo'OK';}其他{echo.$error.}@thar是的,我知道,我告诉您忽略console.log并实际检查AJAX请求和响应。如果您这样做,您可能会立即看到问题。这里:这是您应该用来诊断AJAX问题的东西。您可以看到请求,包括所有数据和头,以及与ser呈现的完全相同的响应在您假设问题出在JavaScript处理您的响应之前,您应该检查发出请求的JavaScript。对$.ajax返回的承诺使用done/fail回调没有错。通常使用它比传递等效的success/error回调好得多。问题是,在执行t、 它创建了一个无限循环。日志1223验证通过,将提交表单。1223计数很快。当设置str=$'ajax-payment-form'。serialize我得到了正确的响应,但操作没有执行
$("#ajax-payment-form").submit(function (e) {