2013-06-04 78 views
1

我一直在尋找這一點,因爲早上,我無法找出其中的問題是..阿賈克斯不工作的按鈕,點擊

這是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); 
      } 
     }); 
    }); 

,這是PHP處理Ajax是被張貼到 「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"].'" /> 

警報似乎可行,但如果(!$ RST){... 不會使插入查詢不運行所做的更改不會生效,並在數據庫中

+1

請解決您的SQL注入錯誤:) – AlanFoster

+2

現場()被棄用jquery1.7,然後取出後.. –

+0

告訴我在哪裏@AlanFoster – 1baga

回答

-1

您發表無變化如果選擇查詢成功? 問候

2

你應該使用對象請求數據:

datas = {topic_id:rel}; 

你需要不斷地引用「這個」 Ajax回調的成功裏面:

$('#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'作爲它的聲明。而'生活'被取消,你應該使用.on()代替。

+0

我剛剛更改和按鈕的文本更改,但沒有指定的結果...它的像Ajax不張貼到PHP頁面... – 1baga

+0

檢查控制檯網絡選項卡結果由您的PHP腳本(錯誤等)返回 –

+0

我剛剛檢查了控制檯,但沒有與腳本相關的錯誤 – 1baga

0

檢查您的文件位置。 subscribe.php在哪裏?和JavaScript文件在哪裏。 嘗試使用螢火蟲Firefox addon並轉到控制檯並檢查ajax請求的詳細信息。 它是否能夠找到subscribe.php

其他明智的放棄在Ajax請求的「url」參數,相對路徑

其他原因可能是require_once(「的functions.php」)的故障; 所以嘗試寫死(「hii」);在subscribe.php

+0

我寫死了,按鈕文本改變了它...所以笏可能是問題....我剛剛檢查了require_once和它的正確 – 1baga

+0

只是修復它..這是一個問題從SQL每說.... fanx你其實把我放在正確的道路 – 1baga

+0

:)酷......... – harish

0

之上的那條線代替你在on()上的live函數,就像在below.Its工作正常。

$('#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); 
     } 
    }); 
}); 
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); 
      } 
     }); 
    }); 
0

$。AJAX({ 類型: 「POST」, URL: 「JQueryServlets」, 數據:{消息:MGE}, 成功:功能(數據){ 警報( '成功' +數據); } });

試試這個代碼

,並在servlet的

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    System.out.println(" inside do post "+request.getParameter("message")); 
}