【问题标题】:ajax inserting null values into SQL table (POST method)ajax 将空值插入 SQL 表(POST 方法)
【发布时间】:2016-10-31 19:19:53
【问题描述】:

我试图通过 Ajax 请求将输入中的数据插入到 SQL 表中。

Ajax 请求本身似乎可以工作,但在将新行插入 SQL 表之前它没有获取输入值:确实添加了新行,但所有其他值都设置为默认值,除了时间和正确的日期。

我找了很多教程来检查我是否正确地编写了我的 Ajax 函数,但我发现的只是 jQuery Ajax 教程,所以我真的不知道我在这里做错了什么。

HTML:

<form method="POST">
  value1: <input type="text" name="value1" maxlength="4"> <br>
  value2: <input type="text" name="value2" maxlength="4"> <br>
  value3: <input type="text" name="value3" maxlength="4"> <br>
</form>
<button onclick="send_ajax()"> Send</button>

Ajax 函数:

function send_ajax() {
    console.log('function clicked');
    if (window.XMLHttpRequest) {
        //code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {
        //code for IE6, IE5
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            console.log('data sent');
        }
    }
    xmlhttp.open('POST', 'filled_inputs_test.php', true);
    xmlhttp.send();             
}

知道我做错了什么吗?

注意:考虑到我的 php 文件在通过提交按钮调用而不使用 Ajax 时可以正常工作,我认为问题来自 Ajax 在调用 php 文件之前没有获取我的输入值。

php代码比较长,我没有添加,如果需要查看请告诉我

【问题讨论】:

    标签: javascript php mysql ajax


    【解决方案1】:

    您正在尝试发送空请求。尝试将发送部分更改为:

    xmlhttp.send(new FormData(document.getElementsByTagName('form')[0]));
    

    【讨论】:

    • 天哪,我怎么没看到:D。现在完美运行,谢谢!
    【解决方案2】:

    您没有在 AJAX 调用中发送输入值。使用:

    xmlhttp.send("value1=" + encodeURIComponent(document.querySelector("input[name=value1]").value) +
                 "&value2=" + encodeURIComponent(document.querySelector("input[name=value2]").value) +
                 "&value3=" + encodeURIComponent(document.querySelector("input[name=value3]").value));
    

    【讨论】:

    • 参数之间缺少&amp;
    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2019-02-21
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多