我有这个星级,我是从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调用来完成这项工作。
答案 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,但我没有使用它。