首页 > 其他分享 >十九、Ajax和iFrame

十九、Ajax和iFrame

时间:2024-02-11 23:22:05浏览次数:26  
标签:function iFrame ajax xhr Ajax html iframe arg 十九

Ajax

Ajax向后台发请求

1、下载引入jQuery

2、语法格式

# get
$.ajax({
  Url: ‘http://www.*****.com’,
  Type: ‘GET’,
  Data: {‘k1’:’v1’},
  Success: function(arg) {
    // arg是字符串类型
    // var obj = JSON.parse(arg)
  }
})
$.ajax({
  Url: ‘http://www.******.com’,
    Type: ‘GET’,
  Data: {‘k1’:’v1’},
  dataType: ‘JSON’,
    Success: function(arg) {
    // arg是对象
  }
})

# POST
$.ajax({
  Url: “/add_classes.html”,
  Type:”POST”,
  Data:{},
  Success:function(arg){
  }
})
# *******
# data的value包含数组时,设置traditional = true
$.ajax({
  Url: “/add_classes.html”,
  Type:”POST”,
  Data:{'key1':[1,2,3],},
  traditional:true 
  Success:function(arg){
  }
})
# data的value是字典时,需要将字典转为字符串
$.ajax({
  Url: “/add_classes.html”,
  Type:”GET”,
  Data:{'key1':JSON.stringify({'k1':'v1',}),},
  Success:function(arg){
  }
})

3、例子

<body>
	...
	<a href="#" class="btn" onclick="AjaxSubmit1();">
    点我
	</a>
	...
	<script src="/static/jquery-3.1.1.js"></script>
  <script>
      function AjaxSubmit1() {
          $.ajax({
              url:'/ajax1.html',
              type:'GET',
              data:{'p':123},
              success:function (arg) {
                  
              }
          })
      }
  </script>
</body>
<body>
	...
	<a href="#" class="btn" onclick="AjaxSubmit2();">
    点我
	</a>
	...
	<script src="/static/jquery-3.1.1.js"></script>
  <script>
      function AjaxSubmit1() {
          $.ajax({
              url:'/ajax1.html',
              type:'POST',
              data:{'p':123},
              success:function (arg) {
                  
              }
          })
      }
  </script>
</body>

4、ajax原理XMLHttpRequest

function AjaxSubmit() {
  var xhr = new XMLHttpRequest();
  xhr.open('GET','/ajax1.html?p=123');
  // send之前设置回调函数
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4){
      // 接受完毕服务器返回的数据
      console.log(xhr.responseText);
    }
  };
  xhr.send(null); // 因为以GET的形式,所以可以不发送数据,只是在url上带参数
}
function AjaxSubmit() {
    var xhr = new XMLHttpRequest();
    // send之前设置回调函数
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4){
            // 接受完毕服务器返回的数据
            console.log(xhr.responseText);
        }
    };
    xhr.open('POST','/ajax1.html');
    // 设置请求头。POST的时候,只有设置请求头,django才会把数据从request.body中解析出来
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset-UTF-8');
    xhr.send("p=456"); //
}

iFrame标签

1、iFrame在html中

<h6>学习iframe</h6>#}
<input type="text" placeholder="请输入URL" id="url"><a onclick="Test1();">查看</a>#}
<iframe id="iframe" src="http://www.autohome.com.cn" style="height: 800px;width: 600px;">
</iframe>
<script>
  function Test1() {
    var url =$('#url').val();  # 拿到input标签的值
    $('#iframe').attr('src',url); # 将url设置给iframe的src
  }
</script>

2、iFrame+Form表单:高仿ajax

<div>
    <iframe id="iframe" name="ifra"></iframe>
    <form id="fm" action="/ajax1.html" method="post" target="ifra">
        <input type="text" name="root" value="1111"/>
        <a href="#" onclick="AjaxSubmit();">提交</a>
    </form>
</div>
<script src="/static/jquery-3.1.1.js"></script>
<script>
  function AjaxSubmit() {
    #	iframe标签的onload:当iframe新加载内容时,调用
      document.getElementById('iframe').onload = reloadIframe; // 这时不需传this 用这种方式的时候,在函数里this就是iframe
      document.getElementById('fm').submit();
  }

  function reloadIframe() {
    # iframe加载内容时,打印自身内容打印
      console.log(this.contentWindow.document.body.innerHTML);
    # 即在这里 this.contentWindow.document.body.innerHTML 就拿到iframe请求返回的数据
  }
</script>

将form标签的target属性=iframe标签的name,当form提交数据时,就会由iframe来提交表单,并展示返回数据。

3、兼容性

相比于ajax、xmlHttpRequest,使用iframe 兼容浏览器最好。

JS笔记

Window.location.reload(); //js主动刷新页面

this.contentWindow.document.body.innerHTML; // 拿到iframe中的内容
$(iframe_element).contents().find('body').html(); // 也可以拿到iframe的内容

$(element).parent(); // element元素的父级
$(element).parent().remove(); // 移除元素

标签:function,iFrame,ajax,xhr,Ajax,html,iframe,arg,十九
From: https://www.cnblogs.com/zhlforhe/p/18013616

相关文章

  • 第十九天:Mysql基础入门
    一、关系型数据库基础1、数据的分类结构化的数据   非结构化的数据  半结构化数据2、关系型数据库RDBMS (1)常用关系数据库 MySQL:MySQL,MariaDB,PerconaServerPostgreSQL:简称为pgsql,EnterpriseDBOracleMSSQLServerDB23、数......
  • 【Vue】使用iframe解决多应用整合问题(微前端)
    一、需求背景有老系统需要重构,新做的系统需要做一个大一统的整合,类似一个分类栏目在菜单位置罗列出有什么子系统应用,点击对应的应用菜单,展示区跳转到相应的子系统应用中我用Excel简单描述了下系统的页面效果: 二、技术方案第一种,使用iframe实现,html提供了iframe标签实现页......
  • $.ajax参数笔记
    $.ajax是jQuery中用于执行AJAX(AsynchronousJavaScriptandXML)请求的方法。这个方法允许你与服务器进行异步通信,获取或发送数据,而不需要重新加载整个页面。下面是$.ajax方法的参数详解:url类型:String描述:请求的地址(默认为当前页地址)。type类型:String描述:请求方式(post......
  • ajax批量删除功能的实现源代码
    效果展示:完整代码如下:<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"conten......
  • SharePoint Online 使用Ajax请求超过5000条数据的列表
    前言相信大家都遇到过SharePointOnline取数据的时候,列表数据超过5000阈值的情况,下面,我们介绍下如何利用分页获取超过5000条数据的列表。正文下面是源代码,主要有两个地方要注意,一个是最开始请求top=5000,告诉请求我们要分页。第二个就是data.d.next,如果这个返回......
  • PyTorch 2.2 中文官方教程(十九)
    使用RPC进行分布式管道并行原文:pytorch.org/tutorials/intermediate/dist_pipeline_parallel_tutorial.html译者:飞龙协议:CCBY-NC-SA4.0作者:ShenLi注意在github中查看并编辑本教程。先决条件:PyTorch分布式概述单机模型并行最佳实践开始使用分布式RPC框......
  • 关于 AJAX 请求跨域问题在 Vue 项目中的解决方式
    0.前言关于域,sry刚刚新建文件夹,写好了就换过来;此文为88岁高龄、入门级前端初心者专用笔记;暂时只关心AJAX请求受同源策略的影响及在Vue项目中的解决方式捏;1.必要性1.0你需要知道(1)协议、域名、端口都相同,才为同源;(2)浏览器报跨域错误,并不是服务器没有返回,而......
  • kettle从入门到精通 第三十九课 kettle 增量同步(日级)
     1、上一课我们学习了在数据量大的情况下的分页全量同步示例,本次我们一起学习下kettle增量全量同步。有些业务场景不需要实时数据,比如统计t-1日的销售业绩情况等。  2、kettle增量全量同步示例依然基于test数据库,从t1表增量同步数据到t2表,假定每天0点跑批将t1表中的t-1日......
  • 学习AJAX时出现has been blocked by CORS policy: Cross origin requests are only su
    练习js时用到ajax,console报错:AccesstoXMLHttpRequestat‘file:///Users/XXX/Downloads/nav/nav.json’fromorigin‘null’hasbeenblockedbyCORSpolicy:Crossoriginrequestsareonlysupportedforprotocolschemes:http,data,chrome,chrome-extension,chro......
  • ajax与action,WordPress主题开发之wp_ajax_{$action}和wp_ajax_nopriv_{$action}的区
    wp_ajax_{$action}和wp_ajax_nopriv_{$action}是WordPress主题开发常用的函数,这两个函数经常用在ajax交互功能上。例如ajax表单登录,ajax提交表单等。本篇文章主要讲述了wp_ajax_{$action}和wp_ajax_nopriv_{$action}之间的区别。WordPress中AJAX请求方式在说wp_ajax_{$action}......