Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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 HTTP POST请求问题_Javascript_Php_Html_Http Post - Fatal编程技术网

Javascript HTTP POST请求问题

Javascript HTTP POST请求问题,javascript,php,html,http-post,Javascript,Php,Html,Http Post,我有一个简单的表单,可以通过POST消息将数据发送到服务器。但是,每当我单击submit按钮时,就会出现“无法执行查询”的错误。以下是我的实现: sample.html <!DOCTYPE html> <html> <head> <script> function pullMore(){ var xmlhttp; if (window.XMLHttpRequest){ // code

我有一个简单的表单,可以通过POST消息将数据发送到服务器。但是,每当我单击submit按钮时,就会出现“无法执行查询”的错误。以下是我的实现:

sample.html

<!DOCTYPE html>
<html>
<head>
<script>
        function pullMore(){
            var xmlhttp;
            if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome,etc.
                xmlhttp = new XMLHttpRequest();
            }else{ // code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("news_mesgs").innerHTML = xmlhttp.responseText;
                }
            }

            var name = document.getElementById("name");
            var email = document.getElementById("email");
            var comments = document.getElementById("comment");
            var parameters="name"+name.value+"&email="+email.value+"&comments="+comments.value;

            xmlhttp.open("POST", "reviews.php", true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send(parameters);
        }
</script>
</head>
<body style="background-color : #e9e9e9;">
<div> Hello there </div>
<form>
    Name: <input type="text" id="name" name="name">
    Comment: <input type="text" id="comment" name="comment">
    Email: <input type="text" id="email" name="email">
    <input type="button" value="Submit" onclick="pullMore()">
</form>


<div id="news_mesgs"> come here </div>
</body>
</html>
更新:由于某种原因,
$\u POST[“name”]
显示为空。我试图
打印var\u dump($\u POST)对于一些示例数据,这是我得到的:

数组(2){[“电子邮件”]=>字符串(11)”abc@abc.com“[“comments”]=>string(5)“hello”}无法执行查询

您缺少赋值运算符。您没有正确发送名称,这就是查询失败的原因

试用

var parameters="name="+name.value+"&email="+email.value+"&comments="+comments.value;
您还缺少引号。使用

$query = 'INSERT INTO Reviews (Name, Email, Review) VALUES ("'.$_POST['name'].'","'.$_POST['email'].'","'.$_POST['comments'].'");';
或者更好一点

$query = 'INSERT INTO Reviews (Name, Email, Review) VALUES ("'.mysql_escape_string($_POST['name']).'","'.mysql_escape_string($_POST['email']).'","'.mysql_escape_string($_POST['comments']).'");';
并且不要只在查询中插入post变量。这是SQL注入的直接方法


检查

由于某种原因,您的查询失败。但是它失败的原因取决于
name
的值是什么。检查数据库日志。在你弄明白这一点后,清理掉那个巨大的安全漏洞。有人可以发布一个名字
Robert');下拉表审查--你会很伤心。我试图回显$\u POST['name'],但它返回空,然后通常的错误消息(无法执行查询)你的代码易受攻击,SQL注入你在
var参数中有错误。您忘记将
=
添加到
“name”+name.value
。它应该是
“name=“+name.value
。即使我更改了javascript,我仍然无法执行queryTry到
die(mysql\u error())
而不是
die(“无法执行查询”)
和post结果这是我在名称字段中输入Samplename时的响应:“字段列表”中的未知列“Samplename”我的表结构:如果不存在,则创建表
查看
名称
varchar(30)不为空,
电子邮件
varchar(30)不为空,
查看
文本不为空,主键(
Email
))引擎=MyISAM默认字符集=latin1;
$query = 'INSERT INTO Reviews (Name, Email, Review) VALUES ("'.mysql_escape_string($_POST['name']).'","'.mysql_escape_string($_POST['email']).'","'.mysql_escape_string($_POST['comments']).'");';