javascript AJAX Post HTML代码

wn9m85ua  于 2023-02-21  发布在  Java
关注(0)|答案(4)|浏览(111)

我有一个使用AJAX发送一些HTML代码的问题,请参阅下面我的代码

<iframe src="http://www.w3schools.com" width="10" height="10" id="awc_frame"></iframe>
<script>var iframe = document.getElementById("awc_frame");</script>

下面是AJAX代码

<script> 

    $.ajax({
        type: "POST",
        url: "mobileView.php",
        data: { val : iframe },
        success: function(data){
            console.log(data); 
        }
    })
</script>

代码没有将变量发送到PHP文件。查看网络端,它发送文本,即如果我在iframe周围加上"",它会发送此代码"val = iframe",但不会发送iframe中的实际代码。"var iframe"确实有效,并会拉回iframe的HTML代码
请告诉我我做错了什么。
先谢了。
编辑:对不起,我需要发送的不是iFrame中的HTML代码,而是整个iFrame代码。

    • 另一个编辑:当我公司的访问者访问我的网站时,我想用Javascript或Jquery从访问者的计算机加载内部网站,然后将客户端上该网站的所有代码发送到服务器,该服务器将在数据库中存储整个iFrame代码。**
os8fio9y

os8fio9y1#

这会将整个html发送到iframe中。

var iframe = $('#awc_frame').html();
jtoj6r0c

jtoj6r0c2#

首先,var iframe不包含iframe元素的HTML-它包含一个DOM节点,它是iframe元素的一种 Package 器(它包含该元素的各种属性,包括HTML)。
接下来,您可能要等待iframe完全加载所有内容,因此必须绑定到它的load事件。
类似这样的方法应该可以奏效:

var $iframe = $("#awc_frame");

$iframe.on("load", function () {
    var iframeHTML = $iframe[0].contentWindow.document.body.innerHTML;
    // jQuery alternative
    var iframeHTML = $iframe.contents().find("body").html();

    $.ajax({
        type: "POST",
        url: "mobileView.php",
        data: {
            val: iframeHTML
        },
        success: function(data){
            console.log(data);
        }
    });
});

在这个例子中非常重要

还有一件事--请注意,对于您自己域名之外的网站,此代码将不起作用(由于同源政策)。任何其他代码也不起作用。

9gm1akwq

9gm1akwq3#

由于javascript在从跨域iframe获取HTML时存在问题,因此您无法跨域执行此操作。但是,为什么不直接将iframe的src属性发送到PHP页面,然后使用file_get_contents获取HTML,然后存储它呢?
Javascript:

var iframe = $('#awc_frame').prop('src');

$.ajax({
    type: "POST",
    url: "posttest.php",
    data: { val : iframe },
    success: function(data){
        console.log(data); 
    }
});

PHP语言:

$html = file_get_contents($_POST['val']);
jfgube3f

jfgube3f4#

你想干什么?

var iframe = document.getElementById("awc_frame");

上面的代码是iframe的一个javascript对象,它包含了很多属性。由于您使用的是jQuery,因此可以通过以下方式获得:

var iframe = $('#awc_frame');

请记住,上面代码本身就是jquery对象格式的元素,您可以获得如下的元素对象:

var iframe = $('#awc_frame')[0];
    • 你做错了什么

如果你想获取iframe的HTML内容:

var iframe_contents = $("#awc_frame").contents();

如果你能多解释一下你想做什么,我可以更新我的答复,以适合你。

***更新***考虑到您正在尝试执行的操作。

    • 方法1:(简易方法)**

你可以用php来获取你需要的网站的内容:

<?php
    $contents = file_get_contents('http://www.w3schools.com');
    // Saving $contents to database...
?>
    • 方法#2:(艰难的道路)**

正如@mdziekon所说,你首先应该等待,直到你的iframe加载,然后:

var iframe = $("#awc_frame");

iframe.on("load", function () {
    var contents = $(this)[0].innerHTML;

    $.ajax({
        type: "POST",
        url: "mobileView.php",
        data: {
            val: contents
        },
        success: function(data){
            console.log(data);
        }
    });
});

我希望它能解决你的问题

相关问题