当我尝试创建一个新的表php时,ajax调用失败

时间:2017-09-28 09:03:38

标签: javascript php jquery mysql ajax

想要向php发送ajax请求以动态创建新表。我有以下代码:

Javascript:

var file = $('#'+option_file_name.id).prop('files')[0];
var form_data = new FormData(); 
form_data.append('file', file);
form_data.append('column_name', option_file_name.id.slice(12));
send_ajax_request(form_data);

function send_ajax_request(pdata){
    console.log(pdata);
    $.ajax({
        url: "set_points_data.php",
        data: pdata,
        contentType: false,
        processData: false,
        dataType: "json",
        type: 'post',
        success: function (data) {
            console.log(data);
        },
        error: function(a,b,c){
            alert("something went wrong");
        }
    });
}

php脚本:

在data.php文件中我连接到数据库并具有所有支持功能。

<?php
include 'data.php';

$data = null;

if(isset($_FILES)){
    $data = $_FILES;
    $type = (string)$_POST["column_name"];
    create_table($conn, $type);
    return_ajax("succes");
}else{
    return_ajax("error");
}

function create_table($conn, $name){
    send_sql($conn, "CREATE TABLE `".$name."` (
        options varchar(255));"
    );
}
?>

更新:

事实证明,如果我将以下代码更改为此错误消失。请参阅以下新代码:

send_sql($conn, "CREATE TABLE testTable (
    options varchar(255)
);");

但这不是我想要的,我需要动态创建表。

当我运行运行ajax请求时,我得到错误出错了。 但是当我在没有ajax调用的情况下运行php脚本时它工作正常。 当我从ajax调用运行php脚本但没有创建表函数时,它也可以正常工作。所以我不确定这里发生了什么。 如果不让我知道,希望这很清楚。

1 个答案:

答案 0 :(得分:1)

在做了一些测试后,我发现ajax在创建create table语句后试图返回一些数据。导致错误。如果您将其更改为以下内容。

if(isset($_POST)){
    $data = $_FILES;
    $db_name = $_POST["tblname"];
    return_ajax(create_table($conn, $db_name));
}else{
    return_ajax("error");
}

function create_table($conn, $name){
    send_sql($conn, "CREATE TABLE `".$name."` (
        options varchar(255)
    );");
    return "database created";
}

这将是有效的。不知道究竟发生了什么,但这解决了ajax错误。