iT邦幫忙

1

廢肥菜比八開發PHP會遇到的水坑_資料在jsp&php的傳遞retuen/echo

php
  • 分享至 

  • xImage
  •  

使用Ajax方法傳資料時
一直以為資料是這樣流動的
https://ithelp.ithome.com.tw/upload/images/20200426/20120558pLvwSjweaa.png
1.Ajaz方式送資料
2.PHP檔解析後依對應邏輯程式回傳資料(return)
3.jsp呈現資料的程式
4.show在畫面上

##結果並不是!!!!
https://ithelp.ithome.com.tw/upload/images/20200426/20120558aPnHiB9QrR.png
之前寫PHP前用return沒出事真的是運氣好...
code jsp

function clickbtn(){
        $.ajax({
            type: "GET",
            url: "../controller/controller.php",
            data: {data: "test"},
            success: function(data) {
                console.log(data);
            },
        })
        alert("ajax結束");  //Ajax結束
    }
    console.log("OK");   //程式一開式就執行OK

code PHP

<?php
$data = $_GET["data"];
$arr = ["apple", "banana", "cola", "1", "2", "3"];
echo $data;           //GET裡的參數test
echo "<br>1";
echo $arr;            // array不能echo所以出Array to string conversion

echo "<br>3<br>";
print_r($arr);        

echo "<br>2<br>";
return $arr;         //本來希望return帶data 但這是錯的(X) 而且程式結束沒有echo END

echo "END";

Network
https://ithelp.ithome.com.tw/upload/images/20200426/201205584yFM1AOIMB.png
console
https://ithelp.ithome.com.tw/upload/images/20200426/20120558YXuvrK5dQ7.png
如果return是可行的話,在console是會在2的後面有dataArray
把PHP換一下

<?php
$data = $_GET["data"];
$arr = ["apple", "banana", "cola", "1", "2", "3"];
echo $data;      //test

echo "<br>2<br>";
return $arr;      //這邊就會結束程式

echo "<br>3<br>";  //以下都不執行
print_r($arr);

echo "END";

所以console只有OK test2
但如果再把rerurn拿掉

<?php
$data = $_GET["data"];
$arr = ["apple", "banana", "cola", "1", "2", "3"];
echo $data;      //test

echo "<br>2<br>";
//return $arr;      //註解

echo "<br>3<br>"; 
print_r($arr);

echo "END";

即使print出來後,還是會照樣echo END 所以要die()來結束
https://ithelp.ithome.com.tw/upload/images/20200426/20120558NI1fpxfrlU.png

關於rerurn exit die網路上有很多討論了!只是自己都會忘記,那就來寫一篇文章加深印象


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言