如何使用xmlhttprequest将值作为变量传输?

时间:2014-01-25 22:54:34

标签: javascript php ajax xmlhttprequest

首先,我不是程序员而且相对缺乏经验...我正在尝试在我的网站上使用星级评分系统,我从this链接下载了脚本。当我在浏览器中预览它时,我正确地将它们显示在我的网站上但是当您点击星形来评价它时,它不会在我的数据库中记录该评级。使用firebug我想我已经将它跟踪到通过ajax请求传输数据的javascript函数。当我点击星号时,我在firebug中得到的响应是“你不应该试图以这种方式访问​​这个文件。”如果我注释掉if / die语句,我在firebug中得到的响应是未定义的索引,它列出了'item','rating','classes'。我下载的脚本的原始ajax请求代码位于底部代码示例中。到处都是我读过如何使用xmlhttprequest提到的ajax请求,所以我希望通过切换到可以消除这个问题的那个,它没有。我现在没有任何语法错误,所以我认为我的xml请求格式正确。你们都觉得怎么样?提前谢谢。

function RateItem(varItemId, varRate)
{
var varOrigClassName = document.getElementById(varItemId).className;
var request;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  request=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  request=new ActiveXObject("Microsoft.XMLHTTP");
  }
request.open("POST","ajax.rate.item.php",true);
//request.onload= ReloadRating;
request.setRequestHeader('item','varItemId');
request.setRequestHeader('rating','varRate');
request.setRequestHeader('classes','varOrigClassName');
request.send('item','rating','classes');
}

ajax.rate.item.php文件

<?php
  require_once("classes/include.all.php");

  // Check that the data was sent
  if (sizeof($_POST) == 0
    || $_POST['item'] == null
    || strlen(trim($_POST['item'])) == 0
    || $_POST['rating'] == null
    || strlen(trim($_POST['rating'])) == 0
    || is_numeric($_POST['rating'])
    || $_POST['classes'] == null
    || strlen(trim($_POST['classes'])) == 0)
 {
    die("You shouldn't be attempting to access this file in this manner.");
  }

  echo Rating::RateItem($_POST['item'],$_POST['rating'],$_POST['classes']);

?>

原始的ajax请求

function RateItem(varItemId, varRating)
{
  var varOrigClassName = document.getElementById(varItemId).className;

  // Retrieve Ajax Feeds
  new Ajax.Request('ajax.rate.item.php',
    {
      method: 'post',
      parameters: {item: varItemId, rating: varRating, classes: varOrigClassName},
      onSuccess: ReloadRating,
      onFailure: RatingError
    }
  );
}

1 个答案:

答案 0 :(得分:0)

要使用POST方法发送params,您可以尝试这种方式:

xmlhttp.open("POST","ajax.rate.item.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("item=" + varItemI + "&rating=" + varRate + "&classes=" + varOrigClassName);

Source MDN