Ajax发送日期数据

问题描述:

我的jquery脚本出现问题,当我尝试从窗体发送日期值时发生错误,当我将它留在空白处时,它不会显示错误。Ajax发送日期数据

<div class="field-wrap"> 
    <input type="date" name="fecha_nacimiento" required autocomplete="off" maxlength="30" placeholder="Fecha de nacimiento">Fecha de nacimiento</input> 
</div> 
<script> 
$(function(){ 
    $('#entrarBt').click(function(){ 
     $.ajax({ 
      url: 'registro_dpb.php', 
      type: 'POST', // GET or POST    
      data: $("#miForm").serialize(), // will be in $_POST on PHP side 

      success: function(data) { // data is the response from your php script 
       // This function is called if your AJAX query was successful 
       alert("Response is: " + data); 
      }, 
      error: function() { 
       // This callback is called if your AJAX query has failed 
       alert("Error!"); 
      } 
     }); 
    }); 
}); 
</script> 
+0

'.serialize()'主要用于http变量。如果你打算使用$ _POST,我会建议使用'serializeArray()'。转储在PHP脚本中的$ _POST上看起来如何? – Daerik

+0

由于提及,我犹豫不决*«正在返回错误,当我尝试发送»* **和**之后*«它不会显示任何错误»* ...通常,我只会说*«替换'.serialize(...)'用'.val()'进行测试。 ;) –

+0

我已经尝试过,但错误再次出现,我的问题是没有与我认为的PHP文件,因为即使我使用的价值与否,问题出现,我会用PHP更新我的帖子呢! –

你的问题是相当subtile ......让它很难找到。
但是解决方案非常简单。

您使用<button>一个<form>这是绝对正确的内部。

但是你要知道,在HTML5,如果类型<button>没有明确定义为“按钮”,它的默认类型是“提交”。

参考here

这是问题...
既然你想使用一个Ajax请求,允许接收应答,而不重新加载页面提交,你要“防止”一<button>的这种正常行为。

提交通过此按键是不会被发送到你的PHP脚本,但你的HTML页面(有一个在<form>标签定义的其它action,所以默认是“自我”。
所以重新加载页面。 ..使你的AJAX请求失败

因此,有两种方法来解决这个问题:

:定义按钮type为 “按钮”:

<button type="button" id="entrarBt" [+ other attributes]>Entrar</button> 


:在您单击处理程序中使用prevent.default()预防此默认行为。

$('#entrarBt').click(function(e){ 
    e.preventDefault(); 

    $.ajax({ 
     //... 

我觉得第二个是另一个程序员谁可以查看您的代码更加明显,但首先是确定了。


对于其他SO读者的利益:
我们 (我和哈维尔)检查所有其他错误的可能性几乎 in chat
我终于找到了原因,对于测试,我评论了整个ajax块,然后注意到该页面仍在提交。

解决这个问题彻底解决了问题。

这绝对是一件棘手的事情!
简而言之,HTML5 <form>中的<button>默认为提交!