ajax responsexml完成该操作所需的数据还不可使用.,Ajax 中“完成该操作所需的数据还不可使用”错误...

本文详细分析了在JavaScript中遇到'完成该操作所需的数据还不可使用'错误的原因,包括未判断请求状态和顺序错误。提供了两种解决方案:一是确保正确检查readyState和status,二是通过window.onerror处理异常。同时解释了readyState的状态码和常见http状态码含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在手动写js,运用xmlHttpRequest对象,来实现异步调用,可能会遇到像“完成该操作所需的数据还不可使用”这样的错误,尤其是在IE版本的浏览器中,更是容易导致此错误,虽然不伤大雅,但是有网页有脚本错误,总是不好的,做为兼前端和程序于一身的自己,自然不希望看到像此类的错误。一下就简单的分析下,导致此错误的几个原因及解决方案吧!

问题:

1、在xmlHttpRequest对象发送请求后,调用响应数据时,未对对象请求的状态做判断,易导致此错误的发生。

2、在判断了xmlHttpRequest状态的前提下,错误依旧。

解决方案:

方法一、诸如以上两个错误,的确是状态未判断时调用数据或是判断状态的顺序错误。进行如下判断,可以避免此类错误,如:if(xmlHttp.readyState==4){if(xmlHttp.status==200){}}(注意:两种不同状态的顺序,不要颠倒了);

方案二、自然是捕获异常,稍作处理,并在window.onerror事件中这样做:window.οnerrοr=function(){return false;}

以下是xmlHttpRequest对象readyState几种状态码所表示的不同含义:

0 (未初始化)

对象已建立,但是尚未初始化(尚未调用open方法)

1 (初始化)

对象已建立,尚未调用send方法

2 (发送数据)

send方法已调用,但是当前的状态及http头未知

3 (数据传送中)

已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,

4 (完成)

数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据 长整形标准http状态码,定义如下:

Number

Description

100

Continue

101

Switching protocols

200

OK

201

Created

202

Accepted

203

Non-Authoritative Information

204

No Content

205

Reset Content

206

Partial Content

300

Multiple Choices

301

Moved Permanently

302

Found

303

See Other

304

Not Modified

305

Use Proxy

307

Temporary Redirect

400

Bad Request

401

Unauthorized

402

Payment Required

403

Forbidden

404

Not Found

405

Method Not Allowed

406

Not Acceptable

407

Proxy Authentication Required

408

Request Timeout

409

Conflict

410

Gone

411

Length Required

412

Precondition Failed

413

Request Entity Too Large

414

Request-URI Too Long

415

Unsupported Media Type

416

Requested Range Not Suitable

417

Expectation Failed

500

Internal Server Error

501

Not Implemented

502

Bad Gateway

503

Service Unavailable

504

Gateway Timeout

505

HTTP Version Not Supported

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值