Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 jQuery在表单提交成功后关闭弹出窗口_Javascript_Jquery - Fatal编程技术网

Javascript jQuery在表单提交成功后关闭弹出窗口

Javascript jQuery在表单提交成功后关闭弹出窗口,javascript,jquery,Javascript,Jquery,我有一个弹出式表单,我希望在成功提交表单后关闭该表单。目前,我们仅在服务器端进行验证,这将使用class.error\u消息创建一个无序的验证错误列表 一旦表单成功提交,我想关闭窗口 目前我用于此目的的jQuery如下所示,但不起作用,因为第一次提交表单时,错误消息的数量始终为零 $(document).ready(function() { $('form#emailQuote').submit(function() { var $emailErrors = $('form#emai

我有一个弹出式表单,我希望在成功提交表单后关闭该表单。目前,我们仅在服务器端进行验证,这将使用class.error\u消息创建一个无序的验证错误列表

一旦表单成功提交,我想关闭窗口

目前我用于此目的的jQuery如下所示,但不起作用,因为第一次提交表单时,错误消息的数量始终为零

$(document).ready(function() {

$('form#emailQuote').submit(function() {

    var $emailErrors = $('form#emailQuote ul.error_message').length;

    alert($emailErrors);

    if ($emailErrors == 0) {
        //window.close();
        alert('no errors');

    } else {
        //alert('errors');
        alert('errors');
    }      
});

}))

您可以这样做(这里服务器端使用php,但可以是任何东西):


.... 
函数do_submit()
{
var params={“param1”:$(“elem1”).val(),“param2”:$(“elem2”).val(),…};
$.ajax
({
url:“ajax_handler.php”,
类型:“POST”,
数据:params,
成功:函数(retval)
{                             
var错误码;
如果(!$.browser.msie)
{
如果($('error_code:first',retval))
{
err_code=$('error_code:first',retval).text();
//检查错误代码并显示错误,或重定向到其他页面,或关闭窗口
}
其他的
{
//错误的xml,显示错误消息
}
}
否则//在IE中,我们需要以不同的方式加载xml
{
var xml=新的ActiveXObject(“Microsoft.XMLDOM”);
xml.async=false;
尝试
{
loadXML(retval);
err_code=xml.documentElement.getElementsByTagName('error_code')[0]。文本;
//检查错误代码并显示错误,或重定向到其他页面,或关闭窗口
}
捕获(错误)
{
//错误的xml,显示错误消息
}
}
}
});
}
Php:
createElement(“响应”);
$xml->appendChild($xml\u root);
$xml_-code=$xml->createElement(“错误代码”);
$xml\u root->appendChild($xml\u代码);
//处理请求
// ....
$xml_val=$xml->createTextNode(utf8_编码(0));//
$xml\u code->appendChild($xml\u val);
打印($xml->saveXML());
?>

我认为我们将在会话中设置一个标志,并在一切成功后输出一个隐藏的表单变量,然后关闭窗口。
<form onsubmit="javascript:do_submit(); return false;"  method="post" >
.... 
</form>

<script type="text/javascript">
function do_submit()
{
  var params = {"param1":$("elem1").val(), "param2":$("elem2").val(), ....};
  $.ajax
  ({
      url:"ajax_handler.php",
      type:"POST",                      
      data:params,
      success: function(retval)
      {                             
         var err_code;
         if (! $.browser.msie)
         {
           if ($('error_code:first',retval))
           {
             err_code = $('error_code:first',retval).text();   
             //check err_code and show error, or redirect to a different page ,or close window             
           }
           else 
           {
               //bad xml, show error message
           }
         }
         else // we need to load xml differently in case of IE
         {
            var xml = new ActiveXObject("Microsoft.XMLDOM");
            xml.async = false;
            try
            {
               xml.loadXML(retval);
               err_code = xml.documentElement.getElementsByTagName('error_code')[0].text;
               //check err_code and show error, or redirect to a different page ,or close window
             }
             catch (error)
             {
               //bad xml, show error message
             }
         }
      }
    });
}
</scirpt>

Php:
<?php
  $xml = new DOMDocument( "1.0", "UTF-8" );
  $xml_root = $xml->createElement("response");        
  $xml->appendChild($xml_root);    
  $xml_code  = $xml->createElement("error_code");
  $xml_root->appendChild($xml_code);
  // process request 
  // ....
  $xml_val = $xml->createTextNode(utf8_encode(0)); // 
  $xml_code->appendChild($xml_val);

  print($xml->saveXML());
?>