0

我已经制作了一个测试 jquery-ajax 发布脚本,我将在我的评分和评论系统中实现它,但是这个脚本不起作用。

我只做了这样的简单发布请求。

测试.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);

?>

请查看并提出使其工作的方法。

谢谢。

4

3 回答 3

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>

当然,您可以进行其他改进以使整个事情变得更整洁,但这至少应该让您工作。

于 2012-10-20T06:07:29.557 回答
0

您应该使用不同的文件进行 ajax 调用,否则它将返回该页面上的所有 html

所以我用了两个文件

索引.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);
   });
  }
});
});  

测试.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);

?>
于 2012-10-20T05:39:01.347 回答
0

检查POST数组变量是否由

$value1 =  isset($_POST['value1']) ? $_POST['value1'] : '';
于 2012-10-20T05:46:52.173 回答