`
小麦麦子
  • 浏览: 30661 次
文章分类
社区版块
存档分类
最新评论

Ajax中eval的使用详解

阅读更多

定义和用法

  Eval它是用来计算某个字符串,并且执行其中的JavaScript代码。

  语法

  1) eval函数接受一个string这个参数,并且这个参数是必须的,这个参数就是要计算的这个字符串。它里面可以函数含有JavaScript的表达式,或者要执行的语句。

  eval(string)

  2) 那,这个既然是函数,就有可能有返回值。它的返回值是:如果这个string参数有返回值的话,那这个函数就原样返回这个string执行完毕的结果。

  3) 有一个地方值得注意,这个eval函数只接受原始的字符串作为参数。如果string参数不是原始字符串,那该方法将不做任何改变的返回。因此,我们不要为这个函数传递一些string对象来作为参数。并且,如果我们试图覆盖eval这个属性,把eval函数赋值给另外一个属性,有可能会抛出一些异常。

  4) 并且,如果这个参数中没有合法的表达式或者语句,有可能会抛出语法错误的异常。

  可以看到,我们的eval函数,功能非常强大。所以,我们在实际应用中应该要更加注意它的合法性、合理性。

  查看示例

  1. 看这一行示例

  eval("x=10;y=20;document.write(x*y)");

  我在里面给它传递进入了一些执行语句。

  1) 我先赋值x=10,然后y=20

  2) 然后我再给xy做一个乘法。

  再把它们的结果输出来。

  那我们的eval函数会把这3条语句作为参数,用来执行。

  我们看一下执行结果,刷新浏览器。



 

  看到了我们的x * y,也就是10 * 20,确实等于200

  这是我们的多条表达式语句。

  2. 看另外一个例子:document.write(eval("2+2"));

  1) 里面我们直接执行2+2,那么它执行的结果应该是4

  2) 那么这eval函数返回这个4document.write的输出,那应该输出为4

  刷新浏览器,确实也得到了为4 的结果。



 

  3. 再做一个简单的示例

  1) 例如我定义一个这样的x变量。

  var x = 10;

  2) 然后我输出它在里面用变量做一个计算。

  document.write(eval(x+7));

  3) 我们看它是不是返回我们想要的结果,应该是返回17,刷新浏览器。



 

  其实,它就是在这里x10,10 7等于17,然后eval执行完只有返回17,由document.write打印在页面上。

  这是我们在字符串下的eval函数的使用

  在其它情况下的应用

  它的返回结果是怎么样的?

  1.辟如,这个:eval("2+3");

  我们是直接传了一个2 + 3在里面,它应该会执行,执行完了之后它就会被返回5

  但是我们这里没有做任何的输出,所以我们应该是看不到这个效果的,它是它仍然是会正常执行的。

  2. 那我们把这个eval函数赋值给这个变量

  var myeval = eval;

  这个有可能会抛出来异常,所以我们在实际项目中,不建议这么使用。虽然我们在有些浏览器里面可能不会抛出异常。

  1) 刷新浏览器:



 

   它是执行了下面的代码:

  var x = 10;

  document.write(eval(x+7));

  eval("2+3");

  var myeval = eval;

  try {

  alert("Result:" + eval(prompt("Enter an expression", "")));

  } catch(e) {

  alert(e);

  }

  2) 我们这个刷新,它并没有抛出异常,所以它在Chrome浏览器里面应该是可以正常执行的。

  3) 我们看一下这段代码,这是用来检测这个eval参数是否合法的。

  try {

  alert("Result:" + eval(prompt("Enter an expression", "")));

  } catch(e) {

  alert(e);

  }

  a) 首先使用 try catch 包裹起来。

  b) 然后执行了一个alert函数,alert函数里面是Result这个字符串 + eval函数的返回值。

  c) eval里面执行了,弹出一个弹框,就是一个交互的对话框,供用户输入一个表达式。

  然后作为执行结果再返回。

  刷新浏览器,这个弹出框是通过eval函数来执行的,执行的时候,它提示输入一个表达式。



 

  例如我输入2+3,那eval函数执行这个2+3之后,应该会返回5,返回5之后,跟Resul这个字符串相接,然后传递给alert函数,所以会弹出来一个5



 

  这就是eval函数在一些其它情况下的使用。

  eval函数是如何解析JSON格式字符串的

  1. 什么是Json格式的字符串呢?

  Json是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器生成、解析。

  2. 下面,我写一个json格式的字符串。

  1) Json字符串外面是一个大括号。

  2) 里面就是类似于我们的字典一样的。



 

  3. 我们利用JavaScript内置的eval函数,将JSON格式的字符串转换成json对象时,我们怎么操作?

  1) 我们需要用一个小括号,先将这个字符串包住。

  2) 例如上面的这个字符串,我给它赋值一个txt这样的一个变量。



 

  赋值变量的时候,我们需要用括号给它括起来。

  外面用双引号的时候,里面就要用单引号。

  var txt = "{'userid':11,'name':'liyi'}";

  3) 然后再解析,它会把这个字符串解析成json的对象。

  然后通过我们的eval函数,在里面加一对小括号。

  然后把这个字符串连接起来。

  var txtObj = eval("("+txt+")");

  4) 这个时候,我们就把解析之后的对象的userid做一次输出。

  document.write(txtObj.userid);

  刷新浏览器,它就将我们的json字符串解析成了一个json的对象。



 

  通过这个对象的.,输出了它的一个属性。Userid11。这就是我们想要的正确的结果。

 

 

原文链接:http://www.maiziedu.com/wiki/ajax/eval/

 

  • 大小: 16.2 KB
  • 大小: 15.6 KB
  • 大小: 16.3 KB
  • 大小: 38.9 KB
  • 大小: 33.8 KB
  • 大小: 31.6 KB
  • 大小: 11.7 KB
  • 大小: 14.7 KB
  • 大小: 14.9 KB
分享到:
评论

相关推荐

    js中eval详解

    在示例中,`X2.Eval`使用`execScript`为IE执行全局代码,而对非IE浏览器(如Firefox)则使用`window.eval`。 需要注意的是,`eval`执行的代码可能会有安全风险,因为它允许任意的代码执行。因此,除非必要,应避免...

    ajax 中josn和xml

    AJAX 中 JSON 和 XML 传值方式详解 AJAX(Asynchronous JavaScript and XML)是一种创建交互式客户端的网页开发技术,允许网页异步地向服务器请求数据,而不需要重新加载整个网页。其中,JSON(JavaScript Object ...

    ajax计算器

    **Ajax 计算器详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术的核心在于利用JavaScript与服务器进行异步数据交互,结合XML或JSON格式的...

    详解vue 中使用 AJAX获取数据的方法

    本文将详细解释在Vue中使用AJAX获取数据的几种方法。 首先,我们来看如何使用jQuery来实现数据的获取。在Vue实例中,我们可以在`created`或`beforeCreate`生命周期钩子中发起AJAX请求。使用jQuery的`$.get`方法可以...

    js 解析ajax传递过来的数据

    在现代Web开发中,异步JavaScript和XML(Ajax)是一种广泛使用的技术,它允许网页在不重新加载整个页面的情况下与服务器进行数据交换。本篇文章将详细探讨如何在JavaScript中解析通过Ajax传递过来的数据,并解释其中...

    thinking in ajax.doc

    Google Suggest是一个使用AJAX的例子,它不使用XML封装数据,而是直接返回JavaScript代码,通过eval函数执行。这种方式可以直接在客户端运行,提高响应速度,例如示例中的eval(XMLHttp.responseText)。 6. AJAX与...

    jquery ajax例子返回值详解

    你可以通过JavaScript的JSON.parse()或直接使用eval()解析返回的数据,然后根据需要更新页面元素,如投票计数器。 在登录注册场景中,jQuery AJAX也可以用来验证用户输入。假设"login.jsp"返回"OK"表示成功,"error...

    extjs3.0 ajax 同步请求

    在上述代码片段中提到了一个关于浏览器兼容性的问题:“在 Firefox 12 中使用时,无法在 IE 和 Chrome 中使用,需要进行一些修改。”这可能是由于不同浏览器对 XMLHttpRequest 对象的支持程度不同所导致的。 解决这...

    ajax的实现.docx

    ### AJAX的实现详解 #### 一、为什么使用AJAX? AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术的优点在于它可以极大地改善用户体验,使得Web...

    Thinking in AJAX全集

    Google Suggest 的例子展示了 AJAX 的高效性,它不使用XML封装,而是直接将服务器返回的数据组织成 JavaScript 代码,通过 `eval()` 函数执行。这种做法减少了数据转换的时间和复杂性,提高了用户体验。 4. AJAX ...

    Thinking+in+AJAX

    在《Thinking in AJAX》中,主要探讨了AJAX技术的使用和设计理念,以及如何超越传统的XML数据封装,实现更灵活、高效的Web应用。以下是对这些知识点的详细说明: 1. **AJAX的核心特征**:通常,AJAX(Asynchronous ...

    jqury+ajax+json应用介绍

    在给定的示例中,使用了两种不同的方式来发送Ajax请求:一种是传统的JavaScript方式,另一种则是使用jQuery提供的简化方式。 ```javascript // 传统JavaScript方式 function request() { var xmlHttp; if ...

    jQuery Ajax异步处理Json数据详解

    在本篇文章中,我们将深入探讨如何使用 jQuery 的 AJAX 方法 `$.getJSON` 和 `$.ajax` 来异步处理 JSON 数据。 首先,`$.getJSON` 是一个简化的 AJAX 函数,专门用于从服务器获取 JSON 数据。在提供的示例中,当...

    Ajax 面试题.docx

    **Ajax和JSON详解** Ajax全称为Asynchronous JavaScript and XML,是一种使用JavaScript技术实现局部更新网页的异步通信技术。它不需刷新整个页面,而是通过HttpRequest对象与服务器进行交互,只更新部分页面内容,...

    ajax数据传输方式实例详解

    在异步应用程序中发送和接收信息时,常见的可以选择以纯文本和XML作为数据格式(可参考《jQuery学习笔记之Ajax用法实例详解》),现在还有一种比较流行的方式:JSON(JavaScript Object Notation)。好了,下面举例...

    php教程 ajax返回 网页特效on数据实例

    而在Internet Explorer中,则需要使用`new ActiveXObject("Microsoft.XMLHTTP")`或`new ActiveXObject("MSXML2.XMLHTTP")`。 2. **发送Ajax请求**: - 在JavaScript中,可以通过设置XMLHttpRequest对象的`open`...

    Ajax+php数据交互并且局部刷新页面的实现详解

    1. 客户端发起请求,通过JavaScript的`XMLHttpRequest`对象或使用jQuery库中的`$.ajax()`方法。 2. 服务器端(PHP)接收到请求,并处理,如查询数据库等。 3. 服务器将处理结果响应给客户端。 4. 客户端接收到响应,...

Global site tag (gtag.js) - Google Analytics