Jquery简单的Ajax POST请求不起作用

时间:2012-10-20 05:22:52

标签: php jquery html ajax

我已经测试了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);

?>

请参阅并建议如何使其发挥作用。

感谢。

3 个答案:

答案 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>

当然,你可以做一些其他的改进,让整个事情变得更整洁,但这应该让你至少工作。