如何在选择框中使用AJAX,JSON和PHP onchange of value检索表单?

时间:2010-12-20 09:09:45

标签: php javascript ajax json calendar

我有一个选择框,在选择其中的值时,我必须显示一个表单,其中有一个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>&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>

我没有显示日历...

2 个答案:

答案 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...