Javascript 数组未通过ajax。
这是用于ajax调用的java脚本代码。在本例中,Javascript 数组未通过ajax。,javascript,php,jquery,ajax,arrays,Javascript,Php,Jquery,Ajax,Arrays,这是用于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.XMLHttpRe
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{
}
?>
您的数据未被设置为URL安全。您说它包含c
代码,这意味着它可能包含(例如)&
字符,这将破坏查询字符串格式,并导致JSON在从中提取时无效
在将数据放入URL之前,需要通过encodeURIComponent
运行数据
server_controlers/compiler.php?q=" + encodeURIComponent(JSON.stringify(arr))
我认为您的请求类型POST/GET中存在问题。U在1中混合了2种请求类型。还有,我如何看到您尝试发送get请求?但在参数中,您使用类型POST
你也可以尝试改变你的php代码。如果你需要使用POST
<?php
if($_POST){
print($_POST);
}
?>
之后,您可以使用数据数组完成所有需要的操作。什么是document.getElementById(“file\u cont”)
?什么是document.getElementById(“file_cont”).value
?@Quentin这是一个c代码的文本区域,它有什么具体的值?数据是在查询字符串中发送的,它不会显示在$\u POST
中,它会显示在$\u GET
和$\u REQUEST
.xmlhttp.open(“POST”,“server_controllers/compiler.php?q=“+JSON.stringify(arr),true);那么,他的请求中的POST是什么意思呢?这意味着这是一个POST请求,没有POST数据,但有一个查询字符串,将出现在$\u GET
中。奇怪。愚蠢。可能不是目的。但不是立即出现的问题。因此,他将$\u POST和$\u GET请求发送到服务器?我看不出其中的原因。或者可能我真的很愚蠢,并且dnt不理解某些内容。不存在$\u POST
请求或$\u GET
请求。存在POST请求和GET请求。任何请求(选项请求除外)都可以在URL中包含一个查询字符串,该字符串将被解析以填充$\u GET
(和$\u请求
)。POST请求可以包括一个消息正文,该正文将被解析以填充$\u POST
和$\u请求
。Cookie也将被解析并用于填充$\u请求
。
<?php
if($_POST){
print($_POST);
}
?>