2010-12-20 39 views
3

我有一個選擇框,選擇一個值,我必須顯示一個表單,其中有一個日期字段,其中包括一個JavaScript日曆功能。我嘗試了與普通的AJAX和PHP組合,但我沒有得到它的日曆,所以我只需要知道如何使用JSON和AJAX和PHP來實現它?如何在選擇框中使用AJAX,JSON和PHP的onchange值檢索表單?

感謝

每一個幫助表示讚賞....

守則

這是JavaScript我使用的AJAX功能:

<script> 
function Inint_AJAX() { 
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE 
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE 
try { return new XMLHttpRequest();   } catch(e) {} //Native Javascript 
alert("XMLHttpRequest not supported"); 
return null; 
}; 
function dochange(path,val) { 
var req = Inint_AJAX(); 
req.onreadystatechange = function() { 
if (req.readyState==4) { 
     if (req.status==200) { 
      document.getElementById('docfields').innerHTML=""; 
      if(req.responseText != ''){ 
      document.getElementById('docfields').innerHTML=req.responseText; //retuen value 
      }else{ 
      document.getElementById('docfields').innerHTML="<br>&nbsp;\t<font size='2'><b>No Fields Available</b></font>"; 
      } 
     } 
} 
}; 
req.open("GET", path+"getDocFields.php?doctype_id="+val); //make connection 
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=iso-8859-1"); // set Header 
req.send(null); //send value 
} 
</script> 

下面是我需要在腳本標記中實例化Calendar對象(tcal)來顯示HTML表單:

<form onsubmit="" action="" method="post" name="newdoc"> 
     <table border="0" style="border: medium none;" id="docfield"> 
      <tbody> 
      <tr> 
      <td style="border-right: medium none;"> 
       Date 
      </td> 
     <td style="border-right: medium none;"> 
      <input type="text" value="" maxlength="10" name="Test" style="width: 100px;" id="date"> 
     <script> 
     new tcal ({ 
     'formname': 'newdoc', 
     'controlname': 'Test' 
     }); 
    </script> 
     </td> 
    </tr> 
    </tbody> 
</table> 
</form> 

我沒有得到顯示日曆...

+0

您是否考慮過放置一些已經嘗試過的代碼? (有更多的信息,更有可能人們將能夠幫助) – Thariama 2010-12-20 09:13:57

+1

@Thariama問題已編輯請看看 – 2010-12-20 09:22:57

+0

ajax請求返回什麼? (如果你不知道使用螢火蟲) – Thariama 2010-12-20 09:27:03

回答

4

我看到在響應HTML,如果HTML通過AJAX調用來將永遠不會被執行的javascrip。 嘗試在XMLHttpRequest對象提取數據並將其放入'#docfields'之後嘗試放入該javascript

new tcal ({ 
'formname': 'newdoc', 
'controlname': 'Test' 
});

 
if (req.readyState==4) 
{ 
    if (req.status==200) 
    { 
     document.getElementById('docfields').innerHTML=""; 
     if(req.responseText != '') 
     { 
      document.getElementById('docfields').innerHTML=req.responseText; //retuen value 
      /** here **/ 
      new tcal ({'formname': 'newdoc','controlname': 'Test'}); 
      /** here **/ 
     } 
     else 
     { 
      document.getElementById('docfields').innerHTML="No Fields Available"; 
     } 
    } 
} 

希望它會有所幫助。

+0

好主意MAN! Thankx – 2010-12-20 10:18:19

+0

我剛剛通過谷歌搜索了類似的東西后,通過谷歌:)有趣的事情,每次我從搜索到SO,我最終編輯的東西。 – 2011-05-13 15:23:46

2

伊姆蘭是對的。您需要提取腳本代碼並運行它。 此代碼可以非常常用:

var scripts = ""; 
$('form)'.find("script").each(function() { 
      var content = $(this).html(); 
      content = content.replace(/<!--/g, "").replace(/(\/\/)?-->/g, ""); 
      scripts += content; 
     }); 
eval (scripts); // eval is evil, but in this case... 
+0

+1,很好的解決辦法 – 2011-04-11 17:36:32

相關問題