我有一个选择框,在选择其中的值时,我必须显示一个表单,其中有一个Date字段,其中包含一个javascript日历功能。我尝试使用普通的AJAX和PHP组合,但是我没有得到Calendar,所以我只需要知道如何使用JSON,AJAX和PHP来实现它?
由于
每一个帮助都得到赞赏....
代码
这是我用于AJAX功能的Javascript:
<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> \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 :(得分:4)
我在响应html中看到javascrip,如果html通过ajax调用,它将永远不会被执行。 试着把那个javascript
new tcal ({ 'formname': 'newdoc', 'controlname': 'Test' });在您的XMLHttpRequest对象获取并将数据放入“#docfields”之后。
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"; } } }
希望它会有所帮助。
答案 1 :(得分: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...