2016-12-07 24 views
0

定義兩個函數是這樣的:Ajax頁面的onclick不起作用(函數(){})

<script> 
     $(function() { 
      function testb() { 
       alert("ddd"); 
      } 
     }) 

     function testa() { 
      alert("ddd"); 
     } 
    </script> 

當加載頁面顯示的AJAX頁面,然後調用thoese功能從阿賈克斯頁面,testa將成功調用,但不是testb

+3

'TESTB()'是內準備處理範圍 –

+2

你包裹'另一個函數中定義testb'定義,它外面是不可見的。 – Dellirium

+0

很高興知道 – Bucketcode

回答

0

如果你的函數在document.ready中,那麼你將能夠調用全局函數以及Ajax成功。如果你的ajax調用是全局的。那麼你將無法在document.ready中調用一個函數。由於範圍的限制..

樣本:阿賈克斯的document.ready

function testb() { 
    alert('ddd'); 
} 
$(function() { 

    $('[id$=btnsubmit]').on('click', function() { 

     $.ajax({ 
      type: "GET", 
      dataType: "json", 
      url: "/Content/test", 
      success: function (data) { 
       // alert(data); 
       testa(); 
       testb(); 
      } 
     }); 

    }); 
    function testa() { 
     alert('zxfgsfg'); 
    } 
}); 

它會在裏面工作..

如果還是要撥打該方式的功能,請查看以下解決方案:

function tesss() { 
    alert('ddd'); 
} 

var M7 = {}; 

$('[id$=btnsubmit]').on('click', function() { 
    $.ajax({ 
     type: "GET", 
     dataType: "json", 
     url: "/Content/test", 
     success: function (data) { 
      // alert(data); 
      M7(); 
      tesss(); 
     } 
    }); 

}); 
$(function() { 
    M7 = function() { 
     alert('zxfgsfg'); 
    }; 
}); 
+0

在我的情況下,我不需要在ajax成功後調用任何函數。我想要做的就是使用ajax加載一個html頁面,然後在這個頁面內部使用onclick來調用一個函數,我只是不知道爲什麼它只有在函數是獨立的時候才起作用。 – Bucketcode