2016-07-25 13 views
0

Ich versuche, den Server das Datum und die Uhrzeit des Clients anzeigen, aber das zeigt nicht die richtige Ausgabe. Hier ist der relevante Teil des Codes:Weitergabe der Variablen von Jquery an PHP

<script type="text/javascript"> 
    $(function(){ 
    var d = new Date(); 
    var dateStr = d.toString() 
    $.post(window.location, { 
     dateStr: dateStr 
    }); 
    alert(dateStr); 
}); 
</script> 

<div id="divMessage"> 
<?php 
    $dstr = 'nothing!'; 
    if(isset($_POST["dateStr"]) && strlen(trim($_POST["dateStr"])) > 0) 
     $dstr = $_POST["dateStr"]; 
    $v = 'current date/time is '.$dstr; 
    echo "<span style=\"color:green\">$v</span>"; 
?> 
</div> 

Wenn der Code korrekt ist, sollte ich "current date time is <client's date/time>" sehen, sondern ich sehe "current date time is nothing!". Welchen Fehler mache ich hier?

+0

Dies ist alles in einer Datei? – BurningLights

+0

Entschuldigen Sie die Frage, aber warum sollten Sie dem Client Zeit auf den Server schicken? – Simon

+0

Der JavaScript-Code wird ausgeführt, wenn der HTML-Code der Seite den Client-Browser erreicht. Der POST wird dann passieren, aber Ihr Code berücksichtigt die Antwort von dieser HTTP-Anfrage nicht. – Pointy

Antwort

1

Hoffe, das hilft, es gab mehrere Dinge, die Sie hinzufügen mussten, damit es funktioniert.

Überprüfen, ob die Seite per Post gesendet wurde und dann die Antwort analysieren, damit die Nachricht sie erneut anzeigt.

<script type="text/javascript"> 
    $(function(){ 
    var d = new Date(); 
    var dateStr = d.toString(); 
    $.post(window.location, { 
     dateStr: dateStr 
    }).success(function(data){ 
     var res = $(data).filter('#divMessage').text(); 
     //console.log(res); 
     $('#divMessage').replaceWith(res); 
    }); 

}); 
</script> 


<div id="divMessage"> 
<?php 
    //include "simple_html_dom.php"; 
    //$html = new simple_html_dom(); 
    //$html->load_file('index2.php'); 
    //$v = $html->find('div[id=box]', 0)->plaintext; 

    if (!empty($_POST['dateStr'])) { 
     $dstr = 'nothing!'; 
     if (isset($_POST["dateStr"]) && strlen(trim($_POST["dateStr"])) > 0) { 
      $dstr = $_POST["dateStr"]; 
     } 
     $v2  = 'current date/time is ' . $dstr; 
     echo "<span style=\"color:green\">$v2</span>"; 
    } 
?> 
</div> 
+0

Funktioniert wie ein Charme. Du bist ein Genie, mein Freund :). – pythonic

+0

Sie sind herzlich willkommen :) – Sunil

1

Hier ist, was Sie fehlt, sehen, welche Daten ist vom Server :)

zurück
<script type="text/javascript"> 
$(document).ready(function(){ 
     var d = new Date(); 
     var returnFromServer = 
     var dateStr = d.toString() 
     $.post(window.location, { 
      dateStr: dateStr 
     }).success(function(data){ 
      //this is return from server 
      alert(data); 
    }); 
     alert(dateStr); 
}); 

</script> 

<div id="divMessage"> 
<?php 
    $dstr = 'nothing!'; 
    if(isset($_POST["dateStr"]) && strlen(trim($_POST["dateStr"])) > 0) 
     $dstr = $_POST["dateStr"]; 
    $v = 'current date/time is '.$dstr; 
    echo "<span style=\"color:green\">$v</span>"; 
?> 
</div> 

Sowieso müssen Sie Dateien bis spalten, weil ich denke, das ist die ganze Seite zurück, und die Spanne mit Ihrem Farbe :)

+0

Das funktioniert auch nicht. – pythonic

+0

@pythonic es sollte Ihnen zeigen, was Sie tun, führen Sie nicht vollständig beantworten, weil Sie PHP und JS mit HTML teilen müssen, was erhalten Sie von 'alert (Daten)'? –

+0

OK. Ich habe was du meinst :). – pythonic

1

Wie andere sagten, müssen Sie 2 Datei eins mit der js und andere für php verwenden, in file.php können Sie machen, was Sie zum Beispiel in db speichern möchten. Ich habe versucht, den Code zu kommentieren, wenn Sie etwas nicht verstehen, zögern Sie zu fragen.

Überprüfen Sie den Pfad, wo die Datei php

file.php

<?php 

$result = Array(); 

if (isset($_POST['action'])) { 
    $client_date = new Date(); 

    // HERE YOU CAN USE FOR SAVE IN DB 
    $result ['result_msg'] = 'success'; 
    $result ['client_date'] = $client_date; 
} else { 
    $result ['result_msg'] = 'error'; 
} 
echo json_encode($result); 

?> 

html

$(document).ready(function(){ 
    $.ajax({   
     type: "POST", 
     url: "file.php", 
     data: { 
      action : 'what you want' 
      // IF YOU WANNA SAVE CLIENT INFORMATION HAVE TO MAKE A FORM AND PASS DATA HERE FOR EXAMPLE CLIENT ID .... 
     }, 
     dataType: 'json' 
    }).done (function(result) { 
     result = JSON.parse(JSON.stringify(result)); 
     if (result.result_msg === 'success') { 
      console.log(result.client_date); // YOU CAN SHOW IN HTML DIV 
     } else { 
      console.log('ERROR'); 
     } 

    }).fail(function(result) { 

     console.log('ERROR'); 

    }); 
}); 

Prost sparen !!!

+1

cities_result ist nicht definiert :) –

+0

@MarkoMackic danke ... Ich klebte aus meinem Code für schnell machen: P –

+0

Danke für die Antwort. Aber es ist überhaupt nicht möglich, diese Codes in der gleichen Datei zu haben. Ich habe eine PHP-Seite, für die ich das mache, da ich den Text auf dieser Seite mit dem Datum/Uhrzeit des Kunden aktualisieren möchte. – pythonic

Verwandte Themen