2016-08-29 9 views
-2

すでに似た話題が何十件もあることを確認しましたが、私が持っている問題を回避することはできません。 私はブートストラップの日付時間ピッカー(https://eonasdan.github.io/bootstrap-datetimepicker)を使用しています。私の目標は、日付が変更されるたびにカレンダー(calendar.php)を保持するページから表示された値をPHPファイル(data.php)に渡すことです。JavascriptからPHPに変数を渡すには?

以下、コードを追加しました。ローカルにいくつかのファイルが保存されているので、Chromeの開発ツールから情報を追加しました。

日付ピッカーがうまくいき、JavaScriptで値を取得できます。 PHPに何も渡されないという問題があります。 構文をチェックしました。 私は何が間違っているのか分かりません。どんな助言も歓迎される以上のものです!

calendar.php:私は、コードを実行すると

<html> 
<head> 
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
<script type="text/javascript" src="moment.min.js"></script> 
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
<script type="text/javascript" src="bootstrap-datetimepicker.min.js"></script> 
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
<link rel="stylesheet" href="bootstrap-datetimepicker.min.css"> 
</head> 
<body> 
<div class="container"> 
<div class="row"> 
<div class='col-sm-6'> 
      <div class="form-group"> 
      <div class='input-group date' id='datetimepicker1' > 
      <input type='text' id='date' name='date' class="form-control" > 
        <span class="input-group-addon"> 
        <span class="glyphicon glyphicon-calendar"></span> 
       </span> 
      </div> 
      </div> 
     </div> 
<script type="text/javascript"> 

$(document).ready(function() { 
    $(function() { 
    // Formatting how date is displayed 
    $('#datetimepicker1').datetimepicker({ 
    calendarWeeks: true, 
    format: "YYYY MM DD" 
     }); 
//Displaying the current date in the text box when the page is accessed 
$('#datetimepicker1').data("DateTimePicker").date(new Date()); 

// Sending the date to PHP when the user is changing it 
//dp.change is an event fired when date is changed 
$('#datetimepicker1').on("dp.change",function(){ 
var day = $('#date').val(); 
$.ajax({ 
    type: "POST", 
    url: "data.php", 
    data: { day : day } }) 
    .done(function() { alert(day); }) 
    .fail(function() { alert("error"); }) 

}); 
}) 

}) 
</script> 
</div> 
</div> 
</body> 
</html> 

、それは日を私に警告(それは(関数(){警告(日);}の.doneに行く))と私の現在で投稿が成功したか、少なくともそれは私がそれをどのように解釈するかである。 これはChromeの開発ツールからのものです。 値が取得されたことを示しています。その他のエラーは表示されません。

// Sending the date to PHP when the user is changing it 
$('#datetimepicker1').on("dp.change",function(){ 
var day = $('#date').val(); // Date gets retrieved : day = "2016 08 03" 
$.ajax({ 
    type: "POST", 
    url: "data.php", 
data: { day : day } }) // Date gets retrived: day = "2016 08 03" 
    .done(function() { alert(day); }) // I get a pop-up with the date 
    .fail(function() { alert("error"); }) 

}); 
}) 

}) 

JavaScriptコードのファイルとPHPコードのファイルは同じフォルダにあります。

PHP(data.php)以下のコードは次のとおりです。

<?php 

if(isset($_POST['day'])) 
{ 
$day = $_POST['day']; 

echo $day; 
} 

?> 

私は単に私が間違っているのか、上記のコードで行方不明です何を把握することはできません。

編集:

私は私が午前問題にも焦点を当てていなかったと思うと私はそのため申し訳ありません。すべてのあなたの提案(それらのためにたくさんのおかげで)は.done(関数)に関するものです。

私の問題は、私のPHPファイル(data.php)が空であることです。日付はAjaxに渡されず、理由はわかりません。投稿は行われません。 私は言われたすべての提案を試してみました。彼らは答えかもしれないが運がないと思っていました。

答えて

1

、応答に印刷するAJAXの応答関数内で同じ変数を置く必要があります。 Webサーバーが値をブラウザに送信しています。ブラウザはその価値をJavaScriptに与えています。 jQueryはその価値のあるプロセスです。その後、あなたはそれを無視します。

doneに渡す関数の最初の引数として渡されます。

.done(function(data_in_response) { alert(data_in_response); }) 
+0

まずで同じ変数をPASSEする必要があり、あなたの答えクエンティンに感謝。残念ながら、投稿を編集しました。私の問題は、私のdata.phpファイルです。ファイルはcalendar.phpから送信されたデータを受信しません。私は本当に何が欠けているのか理解できません。 P.S:あなたの解決策は、私が探していた答えかもしれないが、運がないかもしれないと思った。 – Rocky

+0

"ファイルはcalendar.phpから送信されたデータを受信しません" - あなたはそれをどう思いますか?それはJSにデータをエコーし​​てJSがそれを無視するだけです。 – Quentin

+0

"私もあなたの解決策を試しました" - あなたは試して何が起こったのですか? – Quentin

0

あなたは、PHPは、値を出力している、すなわち、

.done(function(data){ 
    alert(data); 
}) 
-2

あなたは、AJAXの応答関数のすべての

.done(function(data){ 
    alert(data); 
}) 
+0

これは重複した回答です:https://stackoverflow.com/a/39204987/1405981 –

関連する問題