Javascript 使用&;传递URL变量;从JS到PHP的结果是&&引用;省略

Javascript 使用&;传递URL变量;从JS到PHP的结果是&&引用;省略,javascript,php,ajax,url,Javascript,Php,Ajax,Url,对于我来说,找到这个问题的合适标题有点困难,所以这个例子可能会澄清我的问题 我正在发出一个ajax请求,将一些变量从JS传递到PHP。 其中一个变量是带有一些选项的URL,即 https://www.wondermap.it/cgi-bin/qgis_mapserv.fcgi?map=/home/ubuntu/qgis/projects/Demo_sci_WMS/demo_sci.qgs&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeatu

对于我来说,找到这个问题的合适标题有点困难,所以这个例子可能会澄清我的问题

我正在发出一个ajax请求,将一些变量从JS传递到PHP。 其中一个变量是带有一些选项的URL,即

https://www.wondermap.it/cgi-bin/qgis_mapserv.fcgi?map=/home/ubuntu/qgis/projects/Demo_sci_WMS/demo_sci.qgs&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=impianti_risalita&
PHP代码将忽略第一个
&
符号后的任何选项,只考虑这一部分

https://www.wondermap.it/cgi-bin/qgis_mapserv.fcgi?map=/home/ubuntu/qgis/projects/Demo_sci_WMS/demo_sci.qgs
我现在向PHP发出的AJAX请求如下所示

https://localhost/shire/php/export_wfs.php?wfs_url=https://www.wondermap.it/cgi-bin/qgis_mapserv.fcgi?map=/home/ubuntu/qgis/projects/Demo_sci_WMS/demo_sci.qgs&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=impianti_risalita&format=ESRI%20Shapefile
PHP应该处理的两个参数是
wfs\uURL
format

我想我应该避免将
&
符号放在
wfs\u url
参数中,但我不知道应该怎么做。任何帮助都将不胜感激

编辑

以下是AJAX调用:

var xhr;
if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); // all browsers
else xhr = new ActiveXObject("Microsoft.XMLHTTP"); // for IE

// url is https://www.wondermap.it/cgi-bin/qgis_mapserv.fcgi?map=/home/ubuntu/qgis/projects/Demo_sci_WMS/demo_sci.qgs&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=impianti_risalita&
var php_url = window.location.protocol + "//" + window.location.hostname + '/shire/php/export_wfs.php?wfs_url=' + url + 'format=' + format_list[0];
xhr.open('GET', php_url, false);
xhr.onreadystatechange = function () {
    if (xhr.readyState===4 && xhr.status===200) {
        alert('Downloading...');
    }
}
xhr.send();

return false;
});

以下是如何将其作为POST请求发送:

var php_url = '/shire/php/export_wfs.php';
var formData = new FormData();
formData.append('wfs_url', url);
formData.append('format', format_list[0]);
xhr.open('POST', php_url);
xhr.onreadystatechange = function () {
    if (xhr.readyState===4 && xhr.status===200) {
        alert('Server reply: ' + xhr.responseText);
    }
}
xhr.send(formData);
尝试包括():

在服务器端:

$wfs_url = base64_decode($_GET['wfs_url']);
$format = base64_decode($_GET['format']);

您能添加实际的AJAX请求代码吗?使用POST而不是GET请求。@General\u Twyckenham做到了@ChrisG这可能是一种可能性,我们会继续努力,然后带着我的发现回来。@umbe1987看起来不是你的要求。谢谢你的回答。但我决定接受另一个原因有两个:首先,尝试一下我收到的您的建议
base64_encode没有定义javascript
;第二,我更喜欢另一种方法。如果我能克服base64问题,我相信我会成功的,因此再次感谢您的宝贵努力。@umbe1987感谢您的善意解释。您得到的错误可能是由于包含了我链接的函数。我理解你的选择,我很高兴你解决了这个问题。干得好,祝你好运!成功了。感谢您提供代码,我不知道
new formData()
@umbe1987请参见此处:
$wfs_url = base64_decode($_GET['wfs_url']);
$format = base64_decode($_GET['format']);