Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery load()注入到DIV中的PHP文件能否找到有关该DIV的任何信息?_Javascript_Php_Jquery - Fatal编程技术网

Javascript JQuery load()注入到DIV中的PHP文件能否找到有关该DIV的任何信息?

Javascript JQuery load()注入到DIV中的PHP文件能否找到有关该DIV的任何信息?,javascript,php,jquery,Javascript,Php,Jquery,如果我去 $( '#' + subform_id ) .load( "subform.php" ); 其中“#”+子表单_id是DIV的id ... subform.PHP中的PHP是否可以在其PHP代码中找到DIV的标识?(例如,使用自己的JS代码部分) 或者通过某种机制引用它而不知道它的ID?(例如,使用JQ的append()) 显然,我可以将子表单_id作为数据对象的参数传递(load()的第二个参数)。但我只是想知道 以后 跟进我认为Victor2748的建议。。。但事实上,它是我用来

如果我去

$( '#' + subform_id ) .load( "subform.php" );
其中“#”+子表单_id是DIV的id ... subform.PHP中的PHP是否可以在其PHP代码中找到DIV的标识?(例如,使用自己的JS代码部分)

或者通过某种机制引用它而不知道它的ID?(例如,使用JQ的append())

显然,我可以将子表单_id作为数据对象的参数传递(load()的第二个参数)。但我只是想知道

以后

跟进我认为Victor2748的建议。。。但事实上,它是我用来访问现有JSDOM的注入文件中的一个块的ID

Victor2748:如果您阅读了这篇文章,我不知道您如何知道“subform.php页面的父容器的id”,而不以某种方式将此id作为参数传递到load()函数的数据对象中

甚至以后

这个帖子中的每一条评论都说明了一些聪明的事情!事实上,关于指定这是一个PHP文件的问题,我仍然在尝试了解一些事情:显然,当JS在客户端运行时,访问DOM是可能的。但是,如果您的PHP代码需要知道加载到其中的DIV的名称,我相信您确实需要通过POST或GET传递该名称。我认为有很多原因可以解释为什么注入的PHP代码可能需要这类信息,例如,它可以包含一些代码,这些代码在某种程度上会向同一分区注入更多的PHP


虽然。。。很明显,注入代码将不可避免地使用JS/JQ脚本,所以这可能是了解您在DOM中的位置需要什么的合适时机。

我认为是这样。。。如果您在subform.php中有一个脚本标记,并且该文件具有以下HTML:Submit form,那么您应该能够:

var subformId = $('#mydiv').parent().id;

它可以工作,因为脚本标记在包含PHP文件时执行。确保将脚本标记放在subform.php的末尾。

在JavaScript中,可以使用
this.parentNode
获取父容器,并使用
this.parentNode.id
获取父div的id

以下是加载的块如何将自身作为对象/节点的示例:

var loadedBlock = document.getElementById("nameOfYourDownloadedParentContainer")
然后可以使用
loadedBlock.parentNode
获取其父元素,然后可以从中获取任何参数,以标识元素/div


更新:

首先,您需要获取当前正在执行的
标记的节点:

var arrScripts = document.getElementsByTagName('script');
var currentScriptTag = arrScripts[arrScripts.length - 1];
然后,要获取脚本标记的父级,请使用:
currentScriptTag.parentNode


(我还没有测试它,请告诉我它是否有用)

你为什么需要它?不,没有办法不将其作为param传递给服务器端脚本。但你最好解释一下你的预期用途case@A.Wolff你可能不需要它。但是,您也不需要脚本库。另一方面,你可能希望它有机会在你注入的PHP文件中做上千件非常强大的事情。看起来我误解了你的预期行为,但我仍然不确定你在寻找什么。这与PHP无关-你可以很容易地加载你反对的'subform.html'@SamDufel问题的标记,对吗?好的,但是PHP和JS就像劳雷尔和哈代,特威德和特威德,阴阳,或者你可能提到的任何一对小丑。也许您只使用PHP,根本不使用JS/JQ,但提出这样的反对意见不是有点古怪吗?这听起来很棒。当你说“将自身作为一个对象”时,你是指$(这个)?@mikraint不,我指的不是JQuery对象,而是原始javascript元素对象。有多种方法可以做到这一点,我会给你一些例子在一秒钟…道歉!我有点纠结于你所说的“你下载的父母容器的名字”是什么意思!我可以从哪里获得该值?或者这是你给你的分区的ID值吗?@mikoverent只是你的
subform.php的父容器的IDpage@mikerodent没问题:)谢谢。。。如果我理解你,这似乎或多或少是我最后所做的:是的。从JavaScripts的角度来看,我不认为包含PHP页面与静态HTML文件有什么不同。一个脚本块在HTML文档的下面,而不是你想要访问的元素应该总是有效的。只有在JS试图访问DOM元素后创建了要访问的DOM元素时,您才会遇到问题。