当我将我的数组发送到我的php文件时,它不完整地转到php文件。 我的变量是:
[["╪▒┘à┘╛┘╪د","67126881188552864","Empty,Empty,Empty,Empty,8644,-360,-4,8691,-3
.48,-313,1015,4.334 M,1392/12/28,12:30:08,3.99 M,10 B,10%,530,16.4,16.38,┘à╪ش╪د╪
▓,7,3130,8644,1,50,5000, , , ,8644,11553,359,307,8645,1,1,8655,11
030,2,┌»╪▒┘ê┘ç ┘à┘╛┘╪د (╪│┘ç╪د┘à┘è ╪╣╪د┘à) (╪▒┘à┘╛┘╪د),╪ذ╪د╪▓╪د╪▒ ╪د┘ê┘ (╪ز╪د
╪ذ┘┘ê┘è ╪د╪╡┘┘è) ╪ذ┘ê╪▒╪│ ,connOK"]]
我使用HTTP GET请求发送数据,如下所示
var myJsonString = JSON.stringify(arr);
page.open('http://localhost/bptest/danger/get.php?data='+myJsonString,function(status){
console.log("Page opened");
if (status !== 'success') {
console.log('FAIL');
} else {
console.log("REPLY FROM SERVER:");
console.log(page.content);
}});
结束我的简单php文件在代码下面:
<li><?php echo $_GET["data"]; ?></li>
和php得到这个:
[["?????","67126881188552864","Empty,Empty,Empty,Em
pty,8644,-360,-4,8691,-3.48,-313,1015,4.334 M,1392/12/28,12:30:08,3.99 M,10 B,10
%,530,16.4,16.38,????,7,3130,8644,1,50,5000,
为什么它从php重新启动时崩溃以及我如何解决这个问题
答案 0 :(得分:2)
您必须使用encodeURI()对json字符串进行编码。
请参见此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI。
答案 1 :(得分:1)
您必须使用带有JSON的UTF-8字符集。检查这一点:
我认为您的应用的一侧字符集不好或在数据传输过程中更改。
答案 2 :(得分:1)
试试这个
var myJsonString = JSON.stringify(encodeURI(arr));
page.open('http://localhost/bptest/danger/get.php?data='+myJsonString,function(status){
console.log("Page opened");
if (status !== 'success') {
console.log('FAIL');
} else {
console.log("REPLY FROM SERVER:");
console.log(page.content);
}});
答案 3 :(得分:1)
注意<meta charset="utf-8" />
行(文件本身应该是UTF-8,这应该是任何体面的文本编辑器的默认值),还要使用encodeURIComponent,这是你想编码的时候适合查询字符串的内容(与encodeURI
不同,它还会对&
和=
等字符进行编码。
<强> HTML:强>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script>
var arr = [["╪▒┘à┘╛┘╪د","67126881188552864","Empty,Empty,Empty,Empty,8644,-360,-4,8691,-3\
.48,-313,1015,4.334 M,1392/12/28,12:30:08,3.99 M,10 B,10%,530,16.4,16.38,┘à╪ش╪د╪\
▓,7,3130,8644,1,50,5000, , , ,8644,11553,359,307,8645,1,1,8655,11\
030,2,┌»╪▒┘ê┘ç ┘à┘╛┘╪د (╪│┘ç╪د┘à┘è ╪╣╪د┘à) (╪▒┘à┘╛┘╪د),╪ذ╪د╪▓╪د╪▒ ╪د┘ê┘ (╪ز╪د\
╪ذ┘┘ê┘è ╪د╪╡┘┘è) ╪ذ┘ê╪▒╪│ ,connOK"]];
var myJsonString = encodeURIComponent(JSON.stringify(arr));
page.open('http://localhost/bptest/danger/get.php?data='+myJsonString,function(status){
console.log("Page opened");
if (status !== 'success') {
console.log('FAIL');
} else {
console.log("REPLY FROM SERVER:");
console.log(page.content);
}
});
</script></head><body></body></html>
<强> PHP:强>
请注意安全风险评论(您还可以通过使用&#34; text / plain&#34;作为内容类型来避免风险,但如果您需要,则不会将其呈现为HTML)。
<?php
header('Content-type: text/html;charset=utf-8');
echo $_GET['data']; // You better fix this after testing, as it invites XSS scripting attacks!
?>