我正在使用Jquery,Ajax和PHP来尝试发送一个要写入mysql数据库的变量。 正在进行Ajax请求,但php没有获取变量。我不知道为什么会这样。
使用firebug和console.log()我可以看到对write_results.php进行了POST
如果我检查响应,则说
注意:未定义的索引: E:\ write_results.php 中 2
的测试核心这是我的PHP
<?php
$testscore=$_POST['testscore']; //get testscore from Ajax
include 'DB.php';
$con = mysql_connect($host,$user,$pass);
$dbs = mysql_select_db($databaseName, $con);
if (isset($_POST['testscore'])) {
$addClient = "INSERT INTO variables (`id` ,`name`) VALUES (NULL,'$testscore')";
mysql_query($addClient) or die(mysql_error());
}
?>
这是我的ajax脚本
<script type="text/javascript">
$(document).ready(function() {
testscore ="tryagain"; //testvalue to enter into the mysql database
$.ajax({
type: "POST",
url: "write_results.php",
data: testscore,
success: function(){
$('#box2').html("success");
}
})
});
</script>
我的问题
答案 0 :(得分:6)
你没有告诉JS如何发送你的POST参数。将您的JS更改为:
data: { 'testscore':testscore },
这相当于"testscore=" + testcore
形式的key=value
。它告诉JS和PHP你想要将变量testscore
映射到键"testscore"
,然后你将使用$_POST['testscore']
修改:请参阅http://api.jquery.com/jQuery.ajax/,“将数据发送到服务器”
答案 1 :(得分:2)
在你的PHP代码中,你会得到$ _ test''testscore'的$ testscore值。 $ _POST是一个超级全局数组,testscore是这里的索引。此$ _POST数组的索引来自您发布的表单的字段名称。在您的情况下,您使用ajax将数据传递到php页面。您可以通过GET方法或POST方法传递。由于您在POST文件中指定了类型:POST,因此您可以在php文件中使用$ _POST varibale。但是你没有在ajax代码中指定数组索引来保存值。
testscore ="tryagain"; //It will only assign the value to the javascript variable
您需要提供键值对。你可以这样做:
testscore="testscore=tryagain"; //In your php code, the testscore will be the array index and tryagain will be its value.
您还可以将密钥值对以JSON格式发送到PHP文件,如下所示:
testscore={'testscore':'tryagain'};
如果您要发送多个值(例如两个),则可以执行以下操作:
testscore={'testscore':'tryagain','index2':'value2'}
如果在ajax中使用post作为类型,那么在PHP代码中你可以得到如下所示:
$testscore1=$_POST['testscore']; //It will assign tryagain
$testscore2=$_POST['index2']; //It will assign value 2
答案 2 :(得分:0)
尝试使用data: "testscore=" + testscore,
数据需要格式化为查询字符串。