猿问

PHP 解析从 Internet Explorer 发送的 Ajax 请求

我正在制定一个学校的实时时间表。现在当我测试它时,我只在 internet explorer 中得到一个错误。我使用 ie v.11 和字符集 UTF-8


当我将当前学生的数据发送到 php 脚本时,有一些字符,如 ä,ö,ü 会解析为 ?。但仅在 InternetExplorer 中。


如果我发送这样的 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();

        }

有关更多代码或信息,请询问。


慕容森
浏览 178回答 1
1回答

繁花不似锦

在 PHP中urlencode,urldecode如果您想通过 GET 请求发送数据,您应该始终使用。首先对您的参数进行编码,并在收到后再次对其进行解码。大多数网络服务器会为您进行解码,因此您大部分时间只需调用编码代码。还要检查您的表单是否在 html 和 http-header 中使用相同的字符集(首选 utf-8)来自官方 php 文档的示例编码<?phpecho '<a href="mycgi?foo=', urlencode($userinput), '">';解码(网络服务器大部分时间都会为您执行此操作)<?php$query = "my=apples&are=green+and+red";foreach (explode('&', $query) as $chunk) {&nbsp; &nbsp; $param = explode("=", $chunk);&nbsp; &nbsp; if ($param) {&nbsp; &nbsp; &nbsp; &nbsp; printf("Value for parameter \"%s\" is \"%s\"<br/>\n", urldecode($param[0]), urldecode($param[1]));&nbsp; &nbsp; }}一个更简单的解决方案是使用 post 请求而不是 get,这是发送 json 数据的首选方式。
随时随地看视频慕课网APP
我要回答