2016-11-29 15 views
0

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 VARSのために、ほとんどです。 $ _POSTを使うつもりなら、 'serializeArray()'を使うことをお勧めします。ダンプはPHPスクリプトの$ _POSTのように見えますか? – Daerik

+0

私は言葉のために躊躇する*«私が送るしようとするとエラーを返す* **と**直後*«それは私に何かエラーを表示していません»* ...通常、 '.serialize(...)'を '.val()'でテストします。 ;) –

+0

私はすでにそれを試しましたが、エラーは再び起こっています。問題はPHPのファイルではないと私は思っています。 –

答えて

1

あなたの問題はかなり微妙でした...見つけにくいです。
しかし、解決策は本当に簡単です。

<form>の中に<button>を使用してください。これは間違いありません。

しかし、あなたは<button>の種類が明示的に「ボタン」として定義されていない場合はHTML5、で、そのデフォルトのタイプは、「送信」であることを知っている必要があります。

参照here

これは、ページをリロードせずに応答を受信することを可能にするAJAX要求を、使用して提出したいので、あなたが<button>のこの正常な動作を「予防」する必要が問題...
ました。

ページをリロードだから、ボタンによって行われたがそこ<form>タグで定義されている他のactionはなかったので、デフォルトでは「自己」である(PHPスクリプトに、しかし、あなたのHTMLページに送信されませんでした。
提出します。 ..あなたのAJAXリクエストが失敗すること

ことだから、これを修正するには、2つの方法があります:

: "ボタン" としてボタンtypeを定義します。

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

または
:クリックハンドラーでprevent.default()を使用してこの既定の動作を防止します。

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

    $.ajax({ 
     //... 

私は2番目の1があなたのコードを見直すことができ、他のプログラマにとって、より明白であると思いますが、最初はあまりにもokです。他のSOの読者の利益のために



我々(私とハビエル・)は、ほぼすべての他のエラーの可能性をin chat確認しました。
テストのために、私は全体のAjaxのブロックをコメントアウトし、ページがまだ提出されたことに気づいたとき、私は最終的に原因を見つけました。

これを修正して問題を完全に解決しました。

これは絶対に知ることは難しいことです!要するに
、HTML5 <form><button>はデフォルトで提出しています!