UserAgent:
sessionStorageBefore:
localStorageBefore:
cookieBefore:
utm_source:
==================1
LOGIC1:
LOGIC2:
LOGIC2New:
==================2
sessionStorageAfter:
localStorageAfter:
cookieAfter:
Normal
add UTM
DDDDDDjQuery ajax() Method裡面的dataType參數的用意為指定伺服器回傳的預期檔案格式(The data type expected of the server response.),倘若知道回傳的檔案格式為JSON格式並且如此設定了:dataType: 'JSON',
,jQuery會把回傳的檔案轉為JavaScript物件,好讓你操作;但若你漏掉這一項設定,其實可以在接收到檔案後使用jQuery.parseJSON()強制轉換。
正常情況下:
1 | // 前端發起ajax請求,請求方式為POST方式 |
//後端php接收請求,處理資料後回傳給發請ajax請求的函式1
2
3
4public function get_my_ajax_request() {
$response_data = array('1'=>'王小明');
echo json_encode($response_data, JSON_UNESCAPED_UNICODE);
}
要注意到,當瀏覽器和伺服器互相傳遞資料時,資料的格式只能是文字串,因此JSON格式是非常適合拿來當作交換資料的格式
(https://www.w3schools.com/js/js_json_intro.asp => “When exchanging data between a browser and a server, the data can only be text.”)
json_encode($response_data)
使後端回傳了一個JSON字串,且由於dataType: 'JSON',
的關係,jQuery預期收到一個JSON字串,並會準備解析成JavaScript物件,所以console.log(response_data)
顯示的結果會是這樣:
因此我們可以針對這個物件做其中值「王小明」的存取。
若把 dataType: 'JSON',
註解掉,jQuery不會解析成JavaScript物件,而是直接接收字串,則 console.log(response_data)
出來的內容則會變成這樣:
這就只是一個字串,若我們只想要值「王小明」是沒辦法的。(如果你只想要字串就沒差)
此時可以在前端中對response_data對處理 => jQuery.parseJSON(response_data),所以console.log(jQuery.parseJSON(response_data))
結果會顯示:
這也就是jQuery.parseJSON()的功能:將JSON字符串轉為與之對應的JavaScript物件
(坦白說漏掉這一項設定很不應該的…)
題外話:若json_encode($response_data, JSON_UNESCAPED_UNICODE)
沒有加上參數JSON_UNESCAPED_UNICODE
,且檔案內含有中文字(像是這裡的「王小明」),則中文字的部分會被編碼: