Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组未通过ajax。_Javascript_Php_Jquery_Ajax_Arrays - Fatal编程技术网

Javascript 数组未通过ajax。

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

这是用于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{

}

?>

您的数据未被设置为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);
     }
?>