无法通过javascript将值传递给php POST

时间:2014-01-19 21:08:44

标签: javascript php

我正在尝试使用onclick事件将文本从文本框更新到数据库并调用javascript函数。

这是javascript代码

function send_post() 
{

    var hr = new XMLHttpRequest();
    var url ="send_post.php";
    var fn = document.getElementById("post").value;

    var vars = "post="+fn;
    hr.open("POST",url,true);

    hr.setRequestHeader("Content-type","application/x-www-form-urlencode");
    hr.onreadystatechange = function() {
        if (hr.readyState == 4 && hr.status ==200) {
            var return_data = hr.responseText;
            document.getElementById("status").innerHTML = return_data;

        }
    }
    hr.send(vars);
    document.getElementById("status").innerHTML = fn;

}

这是php文件代码

<?php include 'inc/connect.inc.php'; 

$post =@$_POST['post'];
if ($post != "") {
    $date_added = date("Y-m-d");
    $added_by = "test123";
    $user_posted_to = "test123";

    $sqlCommand = "INSERT INTO posts VALUES('','$post','$date_added','$added_by','$user_posted_to')";
    $query = mysql_query($sqlCommand) or die (mysql_error());
}
else{
    echo "Write something to post.";

}

?>

但是我从php得到了这个错误:

未定义的索引:第3行发布

2 个答案:

答案 0 :(得分:0)

您尝试使用的MIME类型为application/x-www-form-urlencoded(最后带有d)。

PHP不知道如何解析编码为application/x-www-form-urlencode的数据(没有d),因此它不会为您的代码填充$_POST

答案 1 :(得分:-1)

Javascript部分:

<script>
function getXMLObject(){
 var xmlHttp = false;
 try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")
 }
 catch (e) {
  try {
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
  }
  catch (e2) {
   xmlHttp = false
  }
 }
 if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
 }
 return xmlHttp;
}

var xmlhttp = new getXMLObject();

function send_post() {
 if(xmlhttp) {
  var post = document.getElementById("post").value;
  xmlhttp.open("POST","send_post.php",true);
  xmlhttp.onreadystatechange = resultPost;
  xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xmlhttp.send("post=" + post);
 }
}

function resultPost() {
 if (xmlhttp.readyState == 4) {
  if(xmlhttp.status == 200) {
   alert(xmlhttp.responseText);
  }
 }
}
</script>

PHP部分:

<?php 

include 'inc/connect.inc.php'; 

if(isset($_POST['post']) && trim($_POST['post']) != '') $post = mysql_real_escape_string(trim($_POST['post']));
else $post = '';

if ($post != '') {
    $date_added = date("Y-m-d");
    $added_by = "test123";
    $user_posted_to = "test123";
    $sqlCommand = "INSERT INTO posts VALUES('','$post','$date_added','$added_by','$user_posted_to')";
    $query = mysql_query($sqlCommand);
    if(mysql_affected_rows($link) == 1){
     echo 'Operation successfully executed';
     exit;
    }
}
echo 'Write something to post.';

?>