dataType:预期返回类型(The type of data that you're expecting back from the server)
contentType:发送到服务器的数据的编码类型(When sending data to the server, use this content type)
*、用xml格式调用比较简单,用json格式要引用Microsoft.Web.Preview.dll库,还要在web.config中添加一大串,比较麻烦
javascript的同源策略(Same-Origin Policy):js不能访问不在同一域下的页面内容,因此XmlHttpRequest只能请求在同一源下的资源
现在假设另一个源url.com下有一js脚本scirpt.js,只有一句
随意改变http://www.url.com/scirpt.js里给funccallback传递的参数,就是说scirpt1中的funccallback接受到了其他源下的动态数据
$.ajax()就是对这种请求形式进行了封装,向其他源的服务器发送一个GET请求,返回一个指定格式的数据
这种格式就是JSONP格式:回调函数名(json格式的动态数据)
脚本执行结果为浏览器弹出确认框:'in success:Varchar32, 性别男’
1、webservice定义了几个方同名的法时,ajax请求会被同名方法中的最后一个响应,而不是根据参数自动匹配
2、Method use 'Get’,返回xml or text,要在Web.config中添加节点
<webServices><protocols><add name= "HttpGet"/></protocols></webServices>
3、Method use 'Get’,返回json,要给Webservice的方法添加UseHttpGet特性
[ScriptMethod(UseHttpGet=true)]
4、dataType并不是服务器返回数据的类型(格式),just expecting。看下面的几种请求方式
结果弹出确认框'Hello Varchar32’,从firefox看到的结果
第二种:省略dataType项,代码略,结果和第一种一样,弹出确认框'Hello Varchar32’
第三种:给dataType指定为'text’,代码略,弹出确认框'undefined’,但返回结果从firefox看和上面两种第二种请求格式一样
第四种:给dataType指定为'xml’,代码略,结果执行了error方法,但返回结果从firefox看和以上几种方式一样(200的响应被认定为了error)
为什么第二种情况不会报错,第三种明明返回了json格式,但data.d为什么是undefined呢,而第四种请求会被认定为error
1)认真从firefxo中观察请求头和响应头会发现,响应头的content-Type始终是'application/json; charset=utf-8’
3)从jquery官网上找到$.ajax()的选项content-Type定义中的这么一句
意思差不多就是:如果指定了'content-Type’,不管有没有数据,始终发送到服务器
如果仅仅是提交的数据的类型(格式),为什么没数据还要发送到服务器呢
结果分别是:object、object、string、不执行success
dataType作用:1、判断是success还是error;2、success方法接受到的数据data的类型
6、采用json格式为什么要'.d’,json格式是一Ojbect,微软框架默认的是{"d":"后台返回的数据"},d属性的值才是后台返回的数据
联系客服