通过javascript函数——元素don';当我通过id检查它们时是否不存在?

通过javascript函数——元素don';当我通过id检查它们时是否不存在?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,在使用ajax查询获取表单HTML后,我想通过jquery预先填充在模式视图中显示的表单字段。我通过document.getElementById调用预填充字段,以设置javascript函数中的值,并使用php代码生成的javascript函数中的值 问题是,即使在AJAX调用的回调函数导入了表单代码之后,我想要填充值的字段似乎也不存在。当我检查函数中是否存在元素以设置这些元素的值时,我看到一个空返回,因此元素不存在。发生什么事了 我可以看到,在html源代码中,php已将正确的表单值放入。但

在使用ajax查询获取表单HTML后,我想通过jquery预先填充在模式视图中显示的表单字段。我通过document.getElementById调用预填充字段,以设置javascript函数中的值,并使用php代码生成的javascript函数中的值

问题是,即使在AJAX调用的回调函数导入了表单代码之后,我想要填充值的字段似乎也不存在。当我检查函数中是否存在元素以设置这些元素的值时,我看到一个空返回,因此元素不存在。发生什么事了

我可以看到,在html源代码中,php已将正确的表单值放入。但是,我没有看到显示的textarea值/innerHTML。相反,文本区域是空白的。文本区域有什么棘手的地方吗

谢谢你的建议

以下是Jquery/javascript:

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.3/jquery-ui.js"></script>


<script>
 $(function() {
     var dialog, form,
         dialog = $( "#dialog-form2" ).dialog({
             autoOpen: false,
             height: 550,
             width: 400,
             modal: true,   
         });

     $( "#create-user2" ).button().on( "click", function() {
         showform();
         dialog.dialog( "open" );
     });
 });
</script>

<div id="dialog-form2" style="background-color: white; border: 4px solid #f1f1f1; padding: 20px;" >

</div>

<div id="dialog-form2" style="background-color: white; border: 4px solid #f1f1f1; padding: 20px;" ></div>

<script>
 function showform()
 {
     var xmlhttp;
     if (window.XMLHttpRequest) {
         xmlhttp=new XMLHttpRequest();
     } else {
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
     }
     xmlhttp.onreadystatechange=function() {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) {
             document.getElementById("dialog-form2").innerHTML=xmlhttp.responseText;
             updateform();
         }
     }

     xmlhttp.open("GET", "newinstructions.html");
     xmlhttp.send();  
 }


 function updateform()
 {
     document.getElementById('f1').value = '<?php echo $included;?>';
     document.getElementById('f2').value = '<?php echo $id_bus;?>';
     document.getElementById('f3').value = '<?php echo $deals_id;?>';
     document.getElementById('f4').value =  '<?php echo $_SESSION['token'];?>';
     document.getElementById('details').innerHTML = '<?php echo $instructions1;?>';
     document.getElementById('details').value = '<?php echo $instructions1;?>';

 }

 </script>

因此,函数updateform()具有正确的值,只有在创建表单本身后才应调用此函数。但是表单上没有显示任何值,在我提交表单后,POST数组中也没有显示任何值。有什么好处?谢谢您的建议。

您想将插入的值填充到新的弹出模式或对话框中吗?? 请多解释一下你想做什么

如果iam正确,则不需要重新包含jquery代码,您可以在回调函数中执行此操作

////编辑 您可以使用
.val()
设置或获取textarea //编辑 在ajax中使用get,而表单使用POST

我想如果您在php中使用
$\u GET
$\u POST
,这会让人困惑 //

解决方案如下:

// 您需要选择textarea,而不仅仅是它的id, 您需要先选择最上面的父级, 然后是第二个顶级家长 例子: 如果你打开你的控制台,你会发现它是这样的(在弹出窗口出现后)
, 你所需要做的就是
var target_textarea=$(“#topid#secondtopid#details”)
然后使用
target_textarea.val()

要将插入的值填充到新的弹出模式或对话框中吗?? 请多解释一下你想做什么

如果iam正确,则不需要重新包含jquery代码,您可以在回调函数中执行此操作

////编辑 您可以使用
.val()
设置或获取textarea //编辑 在ajax中使用get,而表单使用POST

我想如果您在php中使用
$\u GET
$\u POST
,这会让人困惑 //

解决方案如下:

// 您需要选择textarea,而不仅仅是它的id, 您需要先选择最上面的父级, 然后是第二个顶级家长 例子: 如果你打开你的控制台,你会发现它是这样的(在弹出窗口出现后)
, 你所需要做的就是
var target_textarea=$(“#topid#secondtopid#details”)
然后使用
target_textarea.val()

要将插入的值填充到新的弹出模式或对话框中吗?? 请多解释一下你想做什么

如果iam正确,则不需要重新包含jquery代码,您可以在回调函数中执行此操作

////编辑 您可以使用
.val()
设置或获取textarea //编辑 在ajax中使用get,而表单使用POST

我想如果您在php中使用
$\u GET
$\u POST
,这会让人困惑 //

解决方案如下:

// 您需要选择textarea,而不仅仅是它的id, 您需要先选择最上面的父级, 然后是第二个顶级家长 例子: 如果你打开你的控制台,你会发现它是这样的(在弹出窗口出现后)
, 你所需要做的就是
var target_textarea=$(“#topid#secondtopid#details”)
然后使用
target_textarea.val()

要将插入的值填充到新的弹出模式或对话框中吗?? 请多解释一下你想做什么

如果iam正确,则不需要重新包含jquery代码,您可以在回调函数中执行此操作

////编辑 您可以使用
.val()
设置或获取textarea //编辑 在ajax中使用get,而表单使用POST

我想如果您在php中使用
$\u GET
$\u POST
,这会让人困惑 //

解决方案如下:

// 您需要选择textarea,而不仅仅是它的id, 您需要先选择最上面的父级, 然后是第二个顶级家长 例子: 如果你打开你的控制台,你会发现它是这样的(在弹出窗口出现后)
, 你所需要做的就是
var target_textarea=$(“#topid#secondtopid#details”)
然后使用
target_textarea.val()

基本上,您的ajax需要关注

当AJAX例程运行时(我建议使用jQuery,因为它更简单,输入更少——请参见底部的文章),服务器将响应发送回变量
responseText
。您不能使用
获取返回的数据,因为它不在那里。它位于
responseText
变量中

此外,该变量是
xmlhttp.onreadystatechange
函数的本地变量(仅在该函数中可用)


简单AJAX:


基本上,您的ajax需要关注

当AJAX例程运行时(我建议使用jQuery,因为它更简单,输入更少——请参见底部的文章),服务器将响应发送回变量
responseText
。您不能使用
获取返回的数据,因为它不在那里。它在
responseTex中
<form method = "post" action = "changeinstructions.php">
    <textarea rows = "8" cols = "60" name = "details" id = "details" ></textarea>   
    <input type = "hidden" name = "included" '/>
    <input type = "hidden" name = "id" />
    <input type = "hidden" name = "deals_id"/>
    <input type = "hidden" name = "token" />
    <br>
    <input type="submit" tabindex="-1" >
</form>
 function updateform()
 {
     document.getElementById('f1').value = '1';
     document.getElementById('f2').value = '59';
     document.getElementById('f3').value = '226';
     document.getElementById('f4').value =  '7a7dd52df381577c7b8e2518aa9b2808';   
     document.getElementById('details').innerHTML = ' dumb instructions';
     document.getElementById('details').value = ' dumb instructions';

 }