簡體   English   中英

回調從未調用過Jquery.post();

[英]Callback never called on Jquery.post();

我在使用JQUERY Post函數時遇到了一些麻煩。

我有2個調用JQUERY Post函數的函數。 兩者都工作正常,但從未調用過回調函數(handleLike)。

當我手動調用handleLike時,它是完美的。 (即使handleLike內部只有警報,也不會調用回調函數)

你能幫我解決這個問題嗎?

<script type="text/javascript">
    $(document).ready(function() {

      function handleLike(v_cb){


        alert("Call back chamou!");
        $('#erro').html(v_cb.mensagem);

        if (v_cb.class == 'map'){
            var elemento = $('#maplike');
        }else{
            var elemento = $('#commentlike'+v_cb.id);
        }


        if (!(elemento.hasClass('disabled'))){

            elemento.addClass("disabled"); 
            var likes = elemento.find('font').text();
            likes++;
            elemento.find('font').html(likes);
        }
      }

      $('#maplike').click(function() {

          //var map_id = $('#like').find('font').attr('value');

          var id = $(this).attr("name");




          if (!($(this).hasClass('disabled'))){

            var JSONObject= {
              "mensagem":"Testando Json", 
              "id":86,
              "class":"map"
            };

            handleLike(JSONObject);

            alert("Teste");

            $.post(
              '/cmap/maps/like',
              { id: id },
              handleLike,
              'json'
            );
          }
      });

      $('[id*="commentlike"]').click(function() {

          //var map_id = $('#like').find('font').attr('value');

          var id = $(this).attr("name");


          if (!($(this).hasClass('disabled'))){

            $.post(
              '/cmap/comments/like',
              { id: id },
              handleLike,
              'json'
            );


          }
      });


    });

  </script>

診斷,不是解決方案

合理化並添加錯誤處理程序,您應該會得到類似以下內容的信息:

$(document).ready(function() {
    function handleLike(v_cb){
        alert("Call back chamou!");
        $('#erro').html(v_cb.mensagem);
        var elemento = (v_cb.class && v_cb.class == 'map') ? $('#maplike') : $('#commentlike'+v_cb.id);
        if (!elemento.hasClass('disabled')){
            var f = elemento.addClass("disabled").find('font');
            f.html(++Number(f.text()));
        }
    }
    function ajaxError(jqXHR, textStatus, errorThrown) {
        alert('$.post error: ' + textStatus + ' : ' + errorThrown);
    };
    $('#maplike').on('click', function() {
        var $this = $(this);
        if (!$this.hasClass('disabled')) {
            $.post('/cmap/maps/like', { id: $this.attr("name") }, handleLike, 'json').fail(ajaxError);
        }
    });
    $('[id*="commentlike"]').on('click', function() {
        var $this = $(this);
        if (!$this.hasClass('disabled')) {
            $.post('/cmap/comments/like', { id: $this.attr("name") }, handleLike, 'json').fail(ajaxError);
        }
    });
});

未經測試

除非有錯誤,否則錯誤處理程序很有可能會通知您發生了什么問題。

我遵循Kevin B技巧並使用$ ajax方法。

這是一個parseerror。 抱歉。

v_cb的返回不是json,而是html。 我更正了我的退貨,一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM