簡體   English   中英

Ajax:在沒有echo的情況下將PHP變量發送給JS?

[英]Ajax: Send PHP variable to JS without echo?

我對PHP和Ajax都很陌生,所以這看起來似乎微不足道,盡管我似乎無法找到明確的答案。

我正在使用ajax向process.php發送查詢,然后在頁面上顯示結果。 我的工作做得很好,一切都還可以:

$.ajax({
   type: "POST",
   url: "process.php",
   data: { 'data1': yada, 'data2': yadayada},
   beforeSend: function(html) {
      $("#some-div").html('<p>loading</p>');
   },
   success: function(html){
      $("#some-div").html(html);
   }
});

現在,這是有效的,因為我基本上在process.php結束時回顯查詢的結果,然后在#some-div中顯示。 問題是,我還想檢索PHP中處理的一些數據,以便在我的JS中使用它。 但是,我不希望在PHP結束時回顯這些數據,因為我不想在#some-div中顯示它。

換句話說,說我的process.php看起來像這樣:

$var1 = "hello world";
$var2 = "It's sunny outside";
$var3 = ["key1"=>"one", "key2"=>"two", "key3"=>"three"];

$result = $var1 . $var3["key2"];
echo $result;

$ result顯示在#some-div中,沒關系。 但是,如果我想發出一個精彩的警報(); 在JS中使用$ var3 [“key3”]的內容而不在#some-div中顯示它?

我應該再做一個查詢(看起來不方便和效率低下),還是有辦法將數據從process.php傳遞給JS而不回應它?

謝謝!

PHP:

echo json_encode(array(
  'html' => 'this outputs into the div',
  'other_data' => 12345,
));

JS:

$.ajax({
   type: "POST",
   url: "process.php",
   data: { 'data1': yada, 'data2': yadayada},
   beforeSend: function(html) {
      $("#some-div").html('<p>loading</p>');
   },
   success: function(data){
      $("#some-div").html(data.html);
      alert(data.other_data);
   }
});

將數據輸出為JSON,以便您可以擁有單獨的部分或變量:

$response = array('result' => $result, 'otherData' => $var3);
echo json_encode($response);

使用Javascript:

$.ajax({
   type: "POST",
   url: "process.php",
   data: { 'data1': yada, 'data2': yadayada},
   dataType : 'json', // <-- tell jQuery to parse the JSON
   beforeSend: function(html) {
      $("#some-div").html('<p>loading</p>');
   },
   success: function(response){
      alert( response.otherData.key3 );
      $("#some-div").html(response.result);
   }
});

你從成功的功能中獲得了一個目標。 該objet包含來自php文件的響應,只需添加2件事。 data:參數serialize()使用serialize()方法更方便。 兩個:我強烈建議你從php文件中返回一個json objet。 在這種情況下,你將收到一個javascript objetc,非常容易使用。

抱歉我的英語。 干杯!

因此,結論是,是的,您必須輸出一些數據,或者導致您的服務器端腳本,因為當您打開與xmlhttp.open()的連接時,您基本上將結果輸出到執行腳本的瀏覽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM