提问人:TryHarder 提问时间:11/8/2011 更新时间:11/8/2011 访问量:15737
如何修复此未定义的索引错误?Jquery Ajax 为 PHP
How can I fix this undefined index error? Jquery Ajax to PHP
问:
我正在使用 Jquery、Ajax 和 PHP 尝试发送一个要写入 mysql 数据库的变量。 正在发出 Ajax 请求,但 php 未拾取该变量。我不知道为什么会这样。
使用 firebug 和 console.log(),我可以看到已经对 write_results.php
如果我检查响应,它会说
注意:未定义的索引:第 2 行 E:\write_results.php 中的 testscore
这是我的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>
我的问题
- 为什么$testscore没有从 ajax 脚本接收到值?
- 我该如何解决这个问题?
答:
你没有告诉 JS 如何发送你的 POST 参数。将您的 JS 更改为:
data: { 'testscore':testscore },
这等同于形式。它告诉 JS 和 PHP 你希望将变量映射到键,然后你将使用它"testscore=" + testcore
key=value
testscore
"testscore"
$_POST['testscore']
编辑:请参见 http://api.jquery.com/jQuery.ajax/“向服务器发送数据”
评论
尝试使用数据需要格式化为查询字符串。data: "testscore=" + testscore,
评论
在 php 代码中,您可以获得 $_POST['testscore'] 形式的$testscore值。$_POST 是一个超级全局数组,testscore 是这里的索引。这个 _POST 美元数组的索引来自您发布的表单的字段名称。在您的例子中,您正在使用 ajax 将数据传递到 php 页面。可以通过 GET 方法或 POST 方法进行传递。由于您在 ajax 代码中指定了 type: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'}
在您的 PHP 代码中,如果在 ajax 中使用 post as type,您可以得到如下结果:
$testscore1=$_POST['testscore']; //It will assign tryagain
$testscore2=$_POST['index2']; //It will assign value 2
评论