对php页面进行ajax调用

时间:2011-11-16 06:19:40

标签: php javascript jquery ajax

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

明星代码 - 正如您所看到的那样,它有一个评论框,带有星号的星星和用户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调用 - 这是对我发送请求的页面的尝试调用,但是如何在此调用中包含注释和用户ID?

  $('.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调用来完成这项工作。

2 个答案:

答案 0 :(得分:2)

有点hacky,但这对你有用。它还允许在一个页面上进行多次评级(我假设您可能正在考虑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);
        }
      }
    });
  }
});

此外,如果您使用POST而不是GET,您可以将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);
        }
      }
    });
  }
});

答案 1 :(得分:1)

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

    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,它可以通过list属性访问$ html变量。

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