我从早上起就一直在看这个,我无法弄清楚问题出在哪里..
这是javascript/ajax
$('#subscribe').live('click', function(){
rel = $(this).attr("rel");
datas = "topic_id="+rel;
$.ajax({
type: 'POST',
url: 'subscribe.php',
data: datas,
success: function(result){
alert("k");
$(this).val(result);
}
});
});
这是处理ajax的php已发布到“subscribe.php
”
<?php
session_start();
require_once(functions/functions.php);
if(isset($_POST["topic_id"])){
$uid = user_id($_SESSION['username']);
$tid = $_POST["topic_id"];
$qry = "SELECT user_id FROM subscribe WHERE topic_id = $tid";
$rst = mysql_query($qry);
if(!$rst){
$query = "INSERT INTO subscribe (user_id, topic_id) VALUES ($uid, $tid)";
$qry = mysql_query($query);
echo "Subscribed";
}else{
echo "hmmm";
}
}?>
这是按钮
<input type="button" value="Subscribe" name="buton" id="subscribe" rel="'.$output["id"].'" />
警报似乎有效,但更改未生效且数据库中没有任何更改
答案 0 :(得分:2)
您应该将对象用于请求数据:
datas = {topic_id:rel};
你需要在ajax回调成功中继续引用'this':
$('#subscribe').live('click', function(){
var $self = $(this);
rel = $self.attr("rel");
datas = "topic_id="+rel;
$.ajax({
type: 'POST',
url: 'subscribe.php',
data: datas,
success: function(result){
alert("k");
$self.val(result);
}
});
});
您也可以使用闭包:
$('#subscribe').live('click', function () {
rel = $(this).attr("rel");
datas = "topic_id=" + rel;
(function ($self) {
$.ajax({
type: 'POST',
url: 'subscribe.php',
data: datas,
success: function (result) {
alert("k");
$self.val(result);
}
});
})(this);
});
或查看$.proxy()方法。
顺便说一句,这里'rel'是一个全局变量,不确定它是你真正期望的。要使其成为本地,请使用'var'作为其声明。并且'live'被删除,你应该使用.on()
代替。
答案 1 :(得分:0)
检查您的文件位置。 subscribe.php在哪里?以及javascript文件在哪里。 尝试使用firebug Firefox addon并转到控制台并检查ajax请求详细信息。 是否能找到subscribe.php
另外明智地在ajax请求中的'url'参数中给出相对路径
其他原因可能是require_once(“functions.php”)失败; 所以试着写死(“hii”);在subscribe.php中的那一行上方
答案 2 :(得分:0)
代替现场功能,你就像下面那样。它工作正常。
$('#subscribe').on('click', function(){
rel = $(this).attr("rel");
datas = "topic_id="+rel;
$.ajax({
type: 'POST',
url: 'subscribe.php',
data: datas,
success: function(result){
alert("k");
$(this).val(result);
}
});
});
答案 3 :(得分:0)
试试这个
$('#subscribe').live('click', function(){
var t = $(this);
var rel = t.attr("rel");
datas = {'topic_id' : rel};
$.ajax({
type: 'POST',
url: 'subscribe.php',
data: datas,
dataType : 'json',
success: function(result){
t.val(result);
}
});
});
答案 4 :(得分:0)
$。AJAX({ 键入:&#34; POST&#34;, url:&#34; JQueryServlets&#34;, 数据:{message:mge}, 成功:函数(数据){ 警报(&#39;成功&#39 +数据); } });
试试这段代码
和servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(" inside do post "+request.getParameter("message"));
}
答案 5 :(得分:-1)
你发帖if(!$ rst){... 如果选择查询成功,是否会使插入查询不运行? 问候