2012-08-02 87 views
0

感謝您檢查了這一點:

什麼IM做的是閱讀像名稱和類,以確定被點擊的多個值,然後將其發送作爲paremeter到PHP我的服務器,所以我可以切換其類和名稱的價值。

這很好用,並在第一次點擊它時切換類,但是第二次點擊元素時,它不再工作。看着chrome的控制檯,我可以看到POST結果成功,但$ .post回調函數不再運行。

$('a').click(function() { 

      if($(this).attr("name")=="Config"){ 
       return; 
      } 
      else if ($(this).attr("name")=="Return"){ 
       return; 
      } 
      else if ($(this).attr("name")=="Temperatura"){ 
       return; 
      } 

      else{ 



      var parameters = {};        
       parameters.devicename = $(this).attr("name").split('_')[0]; 
       parameters.devicevalue = $(this).attr("name").split('_')[1]; 
       parameters.devicestate = parseInt($(this).html()); 

       alert (parameters.devicestate); 

       var selector; 

       if ($(this).hasClass("Luz_On") || $(this).hasClass("Luz_Off")){ 
       selector = "Luz"; 
       $(this).attr('id','ajaxelement'); 
       alert("entro"); 
       alert($(this).attr('name')); 
       alert(selector); 
       alert($(this).attr('id')) 
       } 
       else if ($(this).hasClass("Cortina_Up") || $(this).hasClass("Cortina_Down")){ 
       selector = "Cortina";   
       $(this).attr('id','ajaxelement');     
       } 
       else if ($(this).hasClass("Temperatura")){ 
       selector = "Temperatura"; 
       $(this).attr('id','ajaxelement'); 
       } 
       else if ($(this).hasClass("Rewind")){ 
       selector = "Rewind"; 
       $(this).attr('id','ajaxelement'); 
       } 
       else if ($(this).hasClass("Play")){ 
       selector = "Play"; 
       $(this).attr('id','ajaxelement'); 
       } 
       else if ($(this).hasClass("Pause")){ 
       selector = "Pause"; 
       $(this).attr('id','ajaxelement'); 
       } 
       else if ($(this).hasClass("Forward")){ 
       selector = "Forward"; 
       $(this).attr('id','ajaxelement'); 
       } 

      $.post(

      "http://localhost/AplicacionWeb/test.php", 

      parameters, 

      function(data){ 

      if (data.valid=='true') 
      { 

       switch(selector) 
       { 
        case "Luz": 

         alert("case"); 

         if ($('#ajaxelement').attr('name') == "Luz_On"){ 

         alert("caseif1"); 
         $('#ajaxelement').removeClass("Luz_On").addClass("Luz_Off"); 
         $('#ajaxelement').attr('name','Luz_Off'); 
         $('#ajaxelement').removeAttr('id'); 

         } 
         if ($('#ajaxelement').attr('name') == "Luz_Off"){ 

         alert("caseif2"); 
         $('#ajaxelement').removeClass("Luz_Off").addClass("Luz_On"); 
         $('#ajaxelement').attr('name','Luz_On'); 
         $('#ajaxelement').removeAttr('id'); 

         } 




        break; 

        case "Cortina": 

        break; 

        case "Temperatura": 

        break; 

        case "Rewind": 

        break; 

        case "Play": 

        break; 

        case "Pause": 

        break; 

        case "Forward": 

        break; 

        default: 
         alert("C'est la vie"); 
       } 




      }//data.valid 

      }, 

      "json" 

      ); 

      } 



     }); // end click 
+0

它可能是你的第二個電話被緩存。嘗試追加一個隨機數到你的網址。例如&rnd = xxxxx – Jules 2012-08-02 02:04:09

+0

注意:在JavaScript中調用'parseInt()'時總是使用radix參數。如果你想要十個整數,把'parseInt($(this).html())'改成'parseInt($(this).html(),10)'並避免[奇怪的行爲](http:// stackoverflow。 COM /問題/ 850341 /解決方法換JavaScript的parseInt函數 - 八進制的錯誤)。 – thisgeek 2012-08-02 02:12:49

回答

0

您配置了POST請求以要求服務器,http://localhost/AplicacionWeb/test.php,返回valid JSON。如果您確認請求已成功返回,請檢查數據是否符合指定的dataType。如果響應數據無效,jQuery ajax請求將不會運行成功/完成回調。