这是ajax调用的java脚本代码。在这种情况下,code
变量获取c程序代码并将其传递到compiler.php
页面。
function insert(){
var code = document.getElementById("file_cont").value;
var arr = new Array(code,"c");
alert(arr[0]);
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//window.location.assign("login.php");
alert (xmlhttp.responseText);
}
}
xmlhttp.open("POST","server_controlers/compiler.php?q="+JSON.stringify(arr),true);
xmlhttp.send();
}
Ajax调用工作正常,但案例是在php文件中。我将jason数组解码为$arr
变量。但如果我echo
喜欢这个echo $arr[0]
,那么它就是空的。但是如果我没有像code
这样在java脚本中将var arr = new Array("aaaa","c");
包含在数组中,那么它的工作正常。当我使用code
变量发送数组时,有些人可以告诉我有什么问题。这是php文件。
<?php
if(isset($_REQUEST["q"])){
$arr = $_REQUEST["q"];
$arr2 = json_decode($arr);
echo $arr2[0];
/*$file = fopen("../temp_files/c/mmm.c","w");
fwrite($file,"$arr[0]");
fclose($file);
shell_exec('gcc -ommm ../temp_files/c/mmm.c');
system('mmm', $retval);*/
}else{
}
?>
答案 0 :(得分:0)
server_controlers/compiler.php?q="+JSON.stringify(arr)
您的数据未设为网址安全。你说它包含c
代码,这意味着它可能包含(例如)&
字符,这会破坏查询字符串格式并导致JSON从中提取时无效。
在将数据放入网址之前,您需要通过encodeURIComponent
运行数据。
server_controlers/compiler.php?q=" + encodeURIComponent(JSON.stringify(arr))
答案 1 :(得分:-1)
我认为你的请求中的问题类型是POST / GET。你在1中洗了2个请求类型。另外我怎么看你尝试发送get请求?但在参数中你使用POST类型。
All information what u need about GET request u can find here.
你也可以尝试改变你的PHP代码。如果你需要使用POST
<?php
if($_POST){
print($_POST);
}
?>
在你能用数据阵列完成所有工作之后。