Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果条件未按预期工作,则AJAX调用会进一步阻止else条件_Javascript_Jquery_Ajax_If Statement - Fatal编程技术网

Javascript 如果条件未按预期工作,则AJAX调用会进一步阻止else条件

Javascript 如果条件未按预期工作,则AJAX调用会进一步阻止else条件,javascript,jquery,ajax,if-statement,Javascript,Jquery,Ajax,If Statement,我是AJAX的初学者。我使用AJAX检查MVC框架中是否存在移动电话号码。我有一个对话框,其中有一个窗体和一个关闭按钮。单击关闭按钮,我需要执行验证 代码如下 查看 $( "#newCustAddClose" ).click(function() { //alert( "Handler for .click() called." ); var cname = $("#custname").val(); var mno = $("#custmobilenumber").va

我是AJAX的初学者。我使用AJAX检查MVC框架中是否存在移动电话号码。我有一个对话框,其中有一个窗体和一个关闭按钮。单击关闭按钮,我需要执行验证

代码如下

查看

$( "#newCustAddClose" ).click(function() {
    //alert( "Handler for .click() called." );
    var cname = $("#custname").val();
    var mno = $("#custmobilenumber").val();
    var phoneno = /^\d{10}$/;
    var flag = 0;
    // alert(mno);
    if(cname == ""){
        alert( "Customer name is required!" );
        $( "#custname" ).focus();
    }
    else if(mno == ""){
        alert( "Mobile number is required!" );
        $( "#custmobilenumber" ).focus();
    }
    else if(!mno.match(phoneno)){
        alert('Please enter 10 digit mobile number.');
        $( "#custmobilenumber" ).focus();
    }
    else if(mno.match(phoneno)){
        $.ajax({
            url: "/api/sales/existmobile",
            type:"POST",
            data:{data: mno},
            success:function(response) {
                console.log('response',response); 
                successCallback(response);
            },
            error:function(response) {
                console.log(response);
            }
        });
    }
    else{
        $('#custdiv').dialog('close');
    }
});

function successCallback(responseObj){
    // Do something like read the response and show data
    //alert(JSON.stringify(responseObj)); // Only applicable to JSON response
    if (responseObj == 'false') {
        alert('Mobile number already exists!');
        $( "#custmobilenumber" ).focus();
    } 
}
当手机号码存在时,它会显示警报,但如果它不存在,我点击关闭按钮,它就会挂在那里。由于所有验证要求都已完全满足,因此应关闭对话框。但它不起作用

我尝试了
returnsuccesscallback(response)
返回$.ajax({…
),但这也不起作用

我不明白哪里出了问题。请帮助和指导。

无法访问行
$('#custdiv')。对话框('close')

这是因为从逻辑上讲,
mno.match(phoneno)
!mno.match(phoneno)
都不可能为false。一旦较早的
else中的一个条件返回true,则后续的
else
语句都不会被查看

如果希望在ajax调用响应时关闭对话框
'true'
,我建议将
$('custdiv').dialog('close')
调用移动到
successCallback
函数中

例如:

function successCallback(responseObj){
    if (responseObj == 'true') {
        $("#custdiv").dialog('close');
    } else {
        alert("Mobile number already exists!");
        $("#custmobilenumber").focus();
    } 
}

请改用event.target.getAttribute(),因为它们不是表单元素。您的浏览器开发工具会显示什么-控制台上有错误吗?POST是否正确发生?服务器会响应什么?响应的格式是什么,您是否需要将适当的
数据类型
添加到AJAX中?另外请注意,上一个
对话框()
呼叫永远不会发生-如果输入了正确格式的电话号码,您将始终处于AJAX块中。该代码可能会移动到您的
successCallback()