簡體   English   中英

PHP 解析從 Internet Explorer 發送的 Ajax 請求

[英]PHP parse Ajax-request sent from Internet Explorer

我正在為一個學校制定實時時間表。 現在,當我測試它時,我只在 Internet Explorer 中遇到錯誤。 我使用 ie v.11 和字符集 UTF-8

當我將當前學生的數據發送到 php 腳本時,有一些像 ä,ö,ü 這樣的字符會被解析為 ?。 但僅在 Internet Explorer 中。

如果我發送這樣的 URL: http://adopraesenz.ipwin.ch/data/students.php?q=getWirth Nalia;3:Kürzel;0;0;4;0;0;0;

並希望像這樣在 php 中接收它們

$q = $_REQUEST["q"];
echo $q;

我得到這個輸出: getWirth Nalia;3:K?rzel;0;0;4;0;0;0;

我正在發送這樣的數據:

function getData(str) {
            var requestURL = "http://adopraesenz.ipwin.ch/data/students.php?q=" +str;
            var request = new XMLHttpRequest();
            request.onreadystatechange = function() {           
                if(this.readyState === 4 && this.status === 200){
                    loadJson(request);
                }
            };
            request.open("GET", requestURL, true);
            request.send();
        }

如需更多代碼或信息,請詢問。

在 PHP 中,如果您想通過 GET 請求發送數據,您應該始終使用urlencodeurldecode 首先對您的參數進行編碼,然后在收到后再次對其進行解碼。 大多數網絡服務器都會為您進行解碼,因此您大部分時間只需調用編碼代碼。 還要檢查您的表單是否在 html 和 http-header(首選 utf-8)中使用相同的字符集

來自官方 php 文檔的示例

編碼

<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';

解碼(網絡服務器大部分時間都會為你做這件事)

<?php
$query = "my=apples&are=green+and+red";

foreach (explode('&', $query) as $chunk) {
    $param = explode("=", $chunk);

    if ($param) {
        printf("Value for parameter \"%s\" is \"%s\"<br/>\n", urldecode($param[0]), urldecode($param[1]));
    }
}

一個更簡單的解決方案是使用 post 請求而不是 get,這是發送 json 數據的首選方式。

暫無
暫無

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

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