Javascript jqueryajax响应总是返回空白消息

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

嗨,我正在尝试制作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:

谁能告诉我怎么了

在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) {