2011-11-16 43 views
3

我有这个星级评价,我从jQuery实现,我需要保存评论,用户ID和星星点击的价值。我不知道的是如何通过ajax调用来传递它,以及PHP至少应该如何处理这个调用?这里是我的代码做一个PHP页面的ajax调用

明星代码 - 你可以看到它有一个评论框,与明星价值和用户ID的星星被存储在一个名为

$user_id 

这里变量的代码

<tr> 
     <td style="padding:10px;"> 
     <span style="font-size: 20px; vertical-align:top;">Comments</span> 
     </td> 
     <td style="padding:10px;"> 
     <textarea name="comments1" cols="60" rows="2"></textarea> 
     </td> 
     <td> 
     <div> 
      <input name="star1" value "1" type="radio" class="star"/> 
      <input name="star1" value="2" type="radio" class="star"/> 
      <input name="star1" value="3" type="radio" class="star"/> 
      <input name="star1" value="4" type="radio" class="star"/> 
      <input name="star1" value="5" type="radio" class="star"/> 
      </div> 
     </td> 
    <tr> 

ajax调用 - 这是对发送请求的页面的尝试调用,但是如何在此调用中包含评论和用户标识?

$('.star').rating({ 
     callback: function(value, link) { 
      var name = $(this).attr('name'); 
      $.ajax({ 
       url: "ajax.php", 
       data: "name=" + name + "&value=" + value, 
       cache: false, 
       success: function(response) { 
        try { 
         console.log(response); 
        } catch (err) { 
         alert(response); 
        } 
       } 
      }); 
     } 
    }); 

现在,ajax.php有变量$passed_user_id, $passed_comments, $passed_ratingval。如何在php中触发调用时检索这些值?像

$passed_comments = //get the value being passed from ajax call 
$passed_ratingval = //get the value being passed for the rating value 
$passed_user_id = //get the value being passed for the user_id` 

我对ajax和PHP的新东西,所以请裸露在我身边。我确实已经设置好了,插入查询,连接一切正常......只是不知道如何使这个工作与ajax调用。

谢谢

回答

1

有点哈克,但这会为你工作。它还将允许在一个页面上进行多种评级(我认为您可能正在考虑TR)。

HTML:

<tr> 
    <td style="padding:10px;"> 
    <input type="hidden" name="userID" value="<?php echo $user_id ?>"> 
    <span style="font-size: 20px; vertical-align:top;">Comments</span> 
    </td> 
    <td style="padding:10px;"> 
    <textarea name="comments" cols="60" rows="2"></textarea> 
    </td> 
    <td> 
    <div> 
     <input name="star1" value "1" type="radio" class="star"/> 
     <input name="star1" value="2" type="radio" class="star"/> 
     <input name="star1" value="3" type="radio" class="star"/> 
     <input name="star1" value="4" type="radio" class="star"/> 
     <input name="star1" value="5" type="radio" class="star"/> 
    </div> 
    </td> 
<tr> 

JS:

$('.star').rating({ 
    callback: function(value, link) { 
    var name = $(this).attr('name'); 
    var userID = $(this).closest('tr').find('input[name="userID"]').val(); 
    var comments = $(this).closest('tr').find('textarea[name="comments"]').val(); 
    $.ajax({ 
     url: "ajax.php", 
     data: "name=" + name + "&value=" + value + "&userID=" + userID + "&comments=" + comments, 
     cache: false, 
     success: function(response) { 
     try { 
      console.log(response); 
     } catch (err) { 
      alert(response); 
     } 
     } 
    }); 
    } 
}); 

另外,如果你使用的不是GET POST,你可以格式化你的Ajax调用更好有点像下面。记得在你的ajax.php文件中使用$ _POST []。

$('.star').rating({ 
    callback: function(value, link) { 
    var name = $(this).attr('name'); 
    var userID = $(this).closest('tr').find('input[name="userID"]').val(); 
    var comments = $(this).closest('tr').find('textarea[name="comments"]').val(); 
    $.ajax({ 
     url: "ajax.php", 
     type: "POST", 
     data: { 
     name: name, 
     value: value, 
     userID: userID, 
     comments: comments 
     }, 
     cache: false, 
     success: function(response) { 
     try { 
      console.log(response); 
     } catch (err) { 
      alert(response); 
     } 
     } 
    }); 
    } 
}); 
+0

你的意思是在ajax.php中得到这样的值... <?php extract $ _POST; $ user_id = $ _POST ['value']; $ selected = $ _POST ['name']; $ comments = $ _POST ['comments']; ?> – user710502

+0

我正在尝试它,但它现在的工作我不知道我失踪了..我测试了我的ajax.php,并且它自己插入..但是当我点击星星..没有任何反应 – user710502

+0

您是否检查过任何控制台或Firebug中的错误? –

0

这里是我的示例代码中,我使用的一个项目:

jQuery.post("load.php", { 
      op_type : opType, 
      xor : xor.toString(), 
      or : or.toString(), 
      and : and.toString(), 
      from : seeds.toString(), 
      last_id : jQuery("input[type=hidden]:last").val(), 
      last_update : last_update_time 
     }, function(data) { 
      var json = jQuery.parseJSON(data); 
      if (json.list.length > 0) { 
       last_update_time = Math.floor(new Date().getTime()/1000); 
       jQuery("div#list_content ul.no-list").append(json.list); 
      } 
     }); 

而在PHP接收数据我用:

$_POST['op_type'] 

,并在此方式我也得到其他变量。 要返回我做的事情是这样的:

echo json_encode(array("list"=>$html)); 

所以afyer jQuery的JSON解析它可以通过列表属性得到$ HTML变量访问。

所以你需要的是在jQuery中指定请求类型并在PHP中获取该请求类型。以JSON发送数据是其中一个选项。 jQuery和PHP也支持XML,但我没有使用它。

相关问题