2013-02-05 112 views
0

我正在尝试在Intranet站点的php目录中构建一个简单的“我查看过”功能。使用AJAX将POST(或GET)数据发送到PHP脚本

因此,当用户阅读该页面时,他们点击底部的一个按钮,其中显示“我读过这个”,它将用户ID和页面ID发送到一个简单的数据库表中,然后我可以收集其他用途。

我试图用AJAX和PHP做到这一点。

这里是我的代码:

<SCRIPT LANGUAGE="JavaScript"> 
function viewSave(form) { 
var itemid = <?php echo $itemid; ?>; 
var userid = <?php echo $userid; ?>; 

var xmlhttp; 

if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

xmlhttp.open("GET","saveView.php?q=itemid="+itemid+"&userid="+userid,true); 
xmlhttp.send(); 
} 

</script> 

,我已经建立了一个简单的形式隐藏字段:

<form onSubmit="return viewSave(this)" > 
<input type="submit" name="submit" value="Save" /> 
</form> 

当我点击提交,该URL的变化,我让我的变量,如这样的:?

thispage.php的itemid = 455 &用户ID = 999 &提交=保存

但“saveView.php”未被调用且数据未发送。

这里是什么在saveView.php:

<?php 


$userid =$_GET["userid"]; 
$itemid = $_GET["itemid"]; 

    // Connect to the database 
      $dbc = mysqli_connect('localhost', 'root', '', 'viewsave'); 

      // Write the data to the database 
      $query = "INSERT INTO saves (entryID, userid, itemid) VALUES ('0', '$userid', '$itemid')"; 
      mysqli_query($dbc, $query); 

>

我猜网址参数仅仅因为出现的形式和有什么不对劲使用JavaScript?

我只是JS的初学者。

帮助赞赏。

Ray。

+1

题外话,但你可以节省自己很多时间和头痛在br owser兼容性,如果你使用jQuery – thaJeztah

+0

为什么你将值嵌入你的JS ** AND **到表单中? '... php?q =“+ itemid,userid'也没有做到你想要的。 –

回答

1

首先,你php文件需要一个名字:

xmlhttp.open("GET","save.php? 

那么你的参数需要的名字:

xmlhttp.open("GET","save.php?q=itemid="+itemid+"&userid="+userid,true); 

然后,在PHP中您可以使用$_GET来获取数据(并检查它是一个号码):

if(array_key_exists('itemid', $_GET) && !is_nan($_GET['itemid'])) { 
    $itemid = $_GET['itemid']; 
} 
+0

谢谢Adam! 我试过你的代码,但是我仍然没有通过数据库获取数据... 我已经对上面的代码进行了编辑。 –