2013-03-25 32 views
0

我已經創建了一個自動完成(建議)字段,因此當您鍵入時,將字段下方的建議顯示爲文本。我重新調用了JavaScript,並且讓文本可點擊。所以當你點擊一個模式出現時(另一個小對話框)。顯示JavaScript值問題

我想要的是將建議字段中的文本顯示到模態。 我使用$ .post(「thesuggtest.php」)方法,因爲我需要獲取所選的建議文本(將被單擊),並通過php & mysql獲取有關它的信息。

這是我使用的主要JavaScript,但我有一些問題。

function showHint(str) 
     { 
     if (str.length==0) 
      { 
      document.getElementById("txtHint").innerHTML=""; 
      return; 
      } 
     if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
      } 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
     xmlhttp.onreadystatechange=function() 
      { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
      comeon = document.getElementById('comeon'); 
      document.getElementById('predlozi').innerHTML='<a data-toggle="modal" data-backdrop="static" href="#myMail" class="label ttip_b" title="New messages">' + xmlhttp.responseText + '</a><div class="modal hide fade" id="myMail"><div class="modal-header"><button class="close" data-dismiss="modal">×</button><h3>New messages</h3></div><div class="modal-body"><div id="comeon"></div>' + $.post("thesuggtest.php", { 'suggestion' : xmlhttp.responseText },function(data){comeon.innerHTML(data);console.log('Error:', data);}); + '</div></div>'; 

      } 
      } 
     xmlhttp.open("GET","gethint.php?q="+str,true); 
     xmlhttp.send(); 
     } 

我使用gethint.php文件來檢索字段(我從一個數組讓他們)匹配輸入值的建議。 問題是我無法在模態(對話框)中回顯文本。

當我把document.write(數據)我得到的價值呼應,但在空白頁上。 當我把comeon.innerHTML(數據)我越來越Uncaught TypeError:不能調用null的方法'innerHTML'。我知道這種類型的錯誤是因爲它找不到該元素,它返回null。 另外,我得到[對象對象]模式中的回顯文本應該是。

任何幫助?謝謝。

+1

你爲什麼手動執行'XMLHttpRequest'的東西?爲什麼不使用像jQuery這樣的庫已經可以處理所有這些? – 2013-03-25 15:38:40

+0

因爲我不那麼熟悉那些東西。我只想將建議的值傳遞給php,並從模式中的數據庫中檢索有關它的信息。 – Neshkowsky 2013-03-25 15:42:56

+1

當你調用'$ .post'時,你已經在使用jQuery的請求。你也應該用它來做這個東西。 – Xymostech 2013-03-25 15:44:47

回答

0

以下是我可以注意到的一些問題;

comeon = document.getElementById('comeon'); 

你甚至不使用comeon div,但你試圖在它被創建之前得到它。你在這條線下創建「comeon」div。

$.post("thesuggtest.php", { 'suggestion' : xmlhttp.responseText },function(data){comeon.innerHTML(data);console.log('Error:', data);}); 

$.post也是異步請求,所以它不會返回你所要求的只是請求它的任何文本。你應該打電話給<a data-toggle="modal"。這一次你將能夠獲得「comeon」div。

希望這會有所幫助。

+0

那麼爲什麼當我把document.write(數據),而不是comeon.innerHTML(數據)它從$ .post檢索文本,但頁面是空白的(它只是文本)? – Neshkowsky 2013-03-25 15:51:42

+0

這可能是因爲當你嘗試將它分配給innerHTML時,comeon div不存在。即使它存在於document.getElementById('comeon')調用的時候,您將爲它指定一個新的HTML父項,從而將該div從DOM中刪除並創建一個新的。如果你能解釋你正在嘗試的,我可以幫助更多的代碼示例。 – 2013-03-25 15:55:24