2010-12-20 38 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

相关问题