我已经测试了jquery-ajax post脚本,我将在我的评级和评论系统中实现它,但是这个脚本不能正常工作。
我只做了这样简单的帖子请求。
test.php的
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$.ajax({
type: "POST",
url: 'test.php',
data: {
value1:'value1',
value2:'value2',
value3:'value3',
value4:'value4',
value5:'value5',
value6:'value6',
value7:'value7',
value8:'value8'
},
cache: false,
success: function(value)
{
alert(value)
}
});
</script>
<?php
$value1 = $_POST['value1'];
$value2 = $_POST['value2'];
$value3 = $_POST['value3'];
$value4 = $_POST['value4'];
$value5 = $_POST['value5'];
$value6 = $_POST['value6'];
$value7 = $_POST['value7'];
$value8 = $_POST['value8'];
$value = array($value1,$value2,$value3,$value4,$value5,$value6,$value7,$value8);
echo json_encode($value);
?>
请参阅并建议如何使其发挥作用。
感谢。
答案 0 :(得分:0)
你应该使用不同的文件进行ajax调用,否则它将返回该页面上的所有html
所以我使用了两个文件
<强>的index.php 强>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: "POST",
url: 'test.php',
data: {
value1:'value1',
value2:'value2',
value3:'value3',
value4:'value4',
value5:'value5',
value6:'value6',
value7:'value7',
value8:'value8', //value5:'value8' before
},
cache: false,
dataType: 'json', //as you are return json from php file so i used dataType json
success: function(value)
{
$.each(value, function(key, val){
alert(val);
});
}
});
});
<强> test.php的强>
<?php
$value1 = $_POST['value1'];
$value2 = $_POST['value2'];
$value3 = $_POST['value3'];
$value4 = $_POST['value4'];
$value5 = $_POST['value5'];
$value6 = $_POST['value6'];
$value7 = $_POST['value7'];
$value8 = $_POST['value8'];
$value = array($value1,$value2,$value3,$value4,$value5,$value6,$value7,$value8);
echo json_encode($value);
?>
答案 1 :(得分:0)
检查
正在设置POST
数组变量
$value1 = isset($_POST['value1']) ? $_POST['value1'] : '';
答案 2 :(得分:0)
为了解决Pragnesh Chauhan所提到的问题,问题看起来是因为返回不是有效的JSON(因为你的其他页面代码包含在内而使其无效。有2个简单的解决方案。
首先,是Pragnesh Chauhan,将你的ajax调用放在另一个文件中,更确定没有其他内容被发送到浏览器(包括尾随空格)。
其次是将当前的单个文件方法重新编写为可行的方法。你这样做会让它看起来更像......
<?php
if(isset($_POST['value1']){ // Checking to see if something was sent to the ajax, you coudl also send another variable is value1 isn't a garuntee
$value1 = $_POST['value1'];
$value2 = $_POST['value2'];
$value3 = $_POST['value3'];
$value4 = $_POST['value4'];
$value5 = $_POST['value5'];
$value6 = $_POST['value6'];
$value7 = $_POST['value7'];
$value8 = $_POST['value8'];
$value = array($value1,$value2,$value3,$value4,$value5,$value6,$value7,$value8);
echo json_encode($value);
exit(); // This tells it to stop so it won't echo out the rest of your page.
}?>
<script type="text/javascript">
$.ajax({
type: "POST",
url: 'test.php',
data: {
value1:'value1',
value2:'value2',
value3:'value3',
value4:'value4',
value5:'value5',
value6:'value6',
value7:'value7',
value8:'value8'
},
cache: false,
success: function(value){
alert(value)
}
});
</script>
当然,你可以做一些其他的改进,让整个事情变得更整洁,但这应该让你至少工作。