Как получить форму, используя обмен значения AJAX, JSON и PHP в поле выбора? - PullRequest
3 голосов
/ 20 декабря 2010

У меня есть поле выбора, при выборе значения в нем я должен отобразить форму, в которой есть поле даты, включающее функциональность календаря javascript. Я попробовал это с обычной комбинацией AJAX и PHP, но у меня нет календаря, поэтому мне просто нужно знать, как я могу это сделать, используя JSON и AJAX и PHP?

Спасибо

каждая помощь ценится ....

КОД

Это 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>

Ниже приведена HTML-форма, которую мне нужно отобразить с помощью объекта Calendar (tcal), в теге script:

<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 ]

4 голосов
/ 20 декабря 2010

Я вижу javascrip в ответном html, который никогда не будет выполнен, если 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";
      }
   }
}

Надеюсь, это поможет.

2 голосов
/ 20 декабря 2010

Имран прав. Вам нужно извлечь скрипт и запустить его. Этот код можно использовать очень часто:

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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...