[英]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.