2016-10-25 38 views
-3

我開發一個移動應用程序使用INTEL XDK與引導大型機。 我有Html代碼和一些外部js文件,其中包含可以運行的功能。 由於某些原因,來自JS文件的函數dosmth()不會在HTML之前加載,所以它不會給我帶來任何結果。 (函數應該返回一個字符串數組)。 有人可以告訴我我的代碼有什麼問題。我錯過了什麼。我從javascript的外部函數不加載html之前

包含文件的HTML標題。

 <script src="js/file.js"></script> 

這是在我的HTML文件上調用函數的代碼。

<h4> 
     <script type="text/javascript"> 
       document.write(dosmth()); 
     </script> 
    </h4> 

js文件中方法的代碼。

 function getCities() 
      { 
      var url = file.api + "name"; 
      console.log(url); 
      $.getJSON(url).done(function(response){ 
           if (!response.length) { 
           console.warn("Empty"); 
       } 
          file.name = response; 
         $('body').trigger('name-data'); 
          console.log(response); 
          return (response); 
        }.fail(function(data, status, error){ 
         console.error("Something went wrong"); 
            }); 
        } 
+0

'getCities'是「dosmth」函數嗎?如果是這樣,這是[如何從異步調用返回響應?]的副本(http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-異步調用) – JJJ

+0

是的,它是相同的,我很抱歉,我忘了編輯名稱。但是,您發送的鏈接非常有幫助,但是我編寫代碼的方式與他們告訴您在鏈接中執行該操作的方式相同。很遺憾,我沒有解決我遇到的問題。 該函數的代碼工作完全正常,如果我在控制檯上運行它,但是當我嘗試將結果寫入HTML中的某處時我有我前面提到的問題 – user6821889

+0

不,你沒有像寫作一樣的方式在副本中。你需要閱讀它並*理解它;從AJAX調用返回值是根本不可能的。 – JJJ

回答

0

也許這會有所幫助。

首先,確保HTML標記是可選的。例如,爲此h4指示一個ID。

<h4 id="cities"></h4> 

您還需要等待文檔調用JS函數之前完成加載:

<script type="text/javascript"> 
    window.onload = function() { 
     getCities(); 
    ); 
</script> 

,而不是返回任何東西,我們更新了h4

function getCities() 
{ 
    var url = file.api + "name"; 
    $.getJSON(url).done(function(response){ 
     if (!response.length) { 
      console.warn("Empty"); 
     } 
     // don't know what these two lines are meant to do 
     file.name = response; 
     $('body').trigger('name-data'); 
     // update the h4 element 
     $('#cities').html(response); 
     // the next line was missing a ")" before ".fail" 
    }).fail(function(data, status, error){ 
     console.error("Something went wrong"); 
    }); 
} 
相關問題