2016-04-30 72 views
1

我有這個代碼的PHP文件:傳遞價值和使用JS

<?php 
dateIndaysoff($_GET['date']); 
function dateIndaysoff($mydate){ 
if(!$mydate)return false; 


       $host = "localhost"; 
       $user = "user"; 
       $pass = "pass"; 
       $databaseName = "db"; 
       $con = new mysqli($host,$user,$pass,$databaseName); 
       if ($con->connect_error) { 
        die("Connection failed: " . $conn->connect_error); 
        } 

       $query = "SELECT date FROM table WHERE date = '$mydate'"; 
       $result = $con->query($query); 
       if ($result->num_rows < 1) {$exists = "FALSE";} else {$exists = "TRUE";} 
       return $exists; 
      }        
     ?> 
在我的.js

現在文件我用這個

jQuery(".datepicker").change(function() { 
    var val = jQuery(this).datepicker().val(); 
    var finalval = jQuery.get("url-to-phpfile/daysoff.php",{date:val}); 
    if (finalval) { 

但它就像我總是有真正的結果。 PHP由自己的作品完美。我想在jQuery中調用PHP並通過URL從datepicker的值,如果結果是真實的做一些事情。我已經嘗試了jQuery的固定值,它的工作就像一個魅力。我做的錯誤應該是或內部的PHP接收值與GET或在jquery接收結果。

我做錯了什麼?

+0

你傳遞給'$ _GET ['date']'的日期格式是什麼?它如何存儲在數據庫? – Brian

回答

3

我可能是錯的,但它看起來像你假設finalval是你的迴應,但它實際上是你的XHR電話。在你的聽衆試試這個:

jQuery(".datepicker").change(function() { 
    var val = $(this).datepicker().val();  // or $(this).val(); ? 
    $.get("ajax/test.html?date=" + val, function(data) { 
     alert("Result is: " + data); 
    }); 
}); 

而且,順便說一句,不要忘記你的escape注射,或使用PDO結合。

+0

是的,但我希望所有這些在.datepicker的變化條件上發佈在第一個地方 –

+0

雅,所以把它放到你的.change監聽器中。我會更新它來向你展示。 –

-1

更新的解決方案。 在php文件我用這個:

<?php 

$conversion = $_GET['date']; 
$newDate = date("Y-m-d", strtotime($conversion)); 
dateIndaysoff($newDate); 
$hello = dateIndaysoff($newDate); 
echo 'Result:'.$hello . '<br>'; 
echo 'Converted date:'.$newDate. '<br>'; 
echo 'Initial date:'.$conversion. '<br>'; 
function dateIndaysoff($mydate){ 
     if(!$mydate)return false; 

     //Connection 
     $host = "localhost"; 
     $user = "user"; 
     $pass = "pass"; 
     $databaseName = "db"; 
     $con = new mysqli($host,$user,$pass,$databaseName); 
     if ($con->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
      } 

     //Select data 
     $query = "SELECT date FROM table WHERE date = '$mydate'"; 
     $result = $con->query($query); 
     // $db=JFactory::getDbo(); 
     if ($result->num_rows < 1) {$exists = "FALSE";} else {$exists = "TRUE";} 
     return $exists; 
    }        
?> 

和.js文件我用這個:

jQuery(".datepicker").change(function() { 
var val = jQuery(this).datepicker().val(); 
console.log(val); 
jQuery.get("/daysoff.php",{date:val},function(dateIndaysoff){ // send back 0 or 1 
     if (dateIndaysoff) { 
     console.log("hide"); 
     jQuery('.chzn-drop li:nth-child(9)').hide(); 
     jQuery('.chzn-drop li:nth-child(10)').hide(); 
    } else { 
     console.log("show"); 
     jQuery('.chzn-drop li:nth-child(9)').show(); 
     jQuery('.chzn-drop li:nth-child(10)').show(); 
    } 
}); 
}); 

正如你可以看到我有放置在PHP日誌和js文件才能看到怎麼回事。我得到正確的結果,如果我只使用PHP文件與日期結束的URL和我看到裏面的js,我得到我的日期變量,它到URL。

但由於某種原因,我總是從.js中獲得HIDE條件。當日期等於30.04.2016時,我應該得到SHOW條件,但是似乎我在js中有一個錯誤(可能不是),或者我在這兩個文件的連接之間出現了錯誤。

任何想法?

+0

您正在使用答案提出問題?無論如何,很容易知道你的錯誤在哪裏:console.log(dateIndaysoff);.這裏有很多關於你的PHP的問題,比如引用真/假以及迴應其他內容而不是結果。你上面試過我的答案嗎? –