javascript - 为什么AJAX发送成功后$_GET总是返回null?

标签 javascript php html mysql ajax

我正在编写一个 PHP 脚本,根据用户输入的行数和列数在 Mysql 中动态创建表。 我正在使用 AJAX 将数据发送到服务器。尽管发送成功,服务器仍在 $_GET 数组中接收空值。

这是我的全部代码:

<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>

<style type="text/css">
    #head-text{
    text-align: center;
    color: blue;
    font-size: 250%;
    }
</style>

</head>
<body>
    <h1 id="head-text">Snippt</h1>
    <div class="main-content">

    <frameset>
        <form>
        <select name="n-cols" id="n-cols"  onchange="createInputFields()">
            <option>Number of columns</option>
            <option>1</option>
            <option>2</option>
            <option>3</option>
            <option>4</option>
            <option>5</option>
            <option>6</option>
        </select>
    </form>

    <div id="main">

    </div>

    <div id="display">

    </div>

</frameset>

</div>
</body>


<script type="text/javascript">
    function createInputFields(){

    var x = document.getElementById('n-cols');
    var n = x.value;

    if(x.selectedIndex == 0){
        alert('Choose a valid index');
    }
    //adding the input fields based on user's input

    document.getElementById('main').innerHTML ='<br>';
    for(var i = 0; i < n;i++){
        var field_name = "text" + i;
        //alert(field_name);
        document.getElementById('main').innerHTML += '<input     type="text" name = "col" placeholder="column name"> &nbsp;&nbsp; <select>  <option>Integer</option> <option>Varchar</option>  </select><br> <br> ';
    }



            document.getElementById('main').innerHTML+='<input type="submit" onClick="createTable('+ n +')" Value="Create Table">';

}


function createTable(n){

    var column_names = [];

    for(var i=0;i<n;i++){   
        var column_name = document.getElementsByName('col')[i].value;
        column_names.push(column_name);
    }

    /*
    Sending the column_names array to PHP file residing on the server
    */
    if(window.XMLHttpRequest){
        xmlhttp = new XMLHttpRequest();
    }
    else{
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }


    var column_names_json = JSON.stringify(column_names);
    //alert(column_names_json);
    xmlhttp.open("GET","create_table.php?col_name = "+column_names_json,true);
    xmlhttp.send(null);
    alert('data sent');
}

</script>
</html>

创建表.php

<?php

$arr_json = $_GET['col_name'];
$arr = json_decode($arr_json);

for($x = 0; $x< count($arr); $x++){
    echo $arr[$x];
    echo "<br>";
}

?>

当我打印 $_GET 的内容时,它返回 NULL。

最佳答案

改变

xmlhttp.open("GET","create_table.php?col_name = "+column_names_json,true);

xmlhttp.open("GET","create_table.php?col_name="+column_names_json,true);

您的 URL 字符串中有空格。

编辑:

将您的发送过程更改为:

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "/create_table.php");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify(column_names));

然后将您的 PHP 脚本更改为:

$json = json_decode(file_get_contents("php://input"));
print_r($json);

关于javascript - 为什么AJAX发送成功后$_GET总是返回null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42492034/

相关文章:

html - 解决 Chrome 中的 RTL children ordering

html - 转换元素内的 CSS 不透明动画

javascript - 如何在css文件中写入javascript值

javascript - 从 JavaScript 触发服务器端电子邮件,无需回发

php - 如何从非管理员用户的类别列表小部件中排除类别

php - 上传后文件名显示不正确 - PHP

javascript - While 循环增加数字直到高于或等于目标

javascript - d3.js 3D数组插值

php - composer.phar 非常慢并且无法完成安装或更新

html - 媒体查询中页脚的高度