我只是写一个小的Ajax框架来实现小项目的可重用性,但是我遇到了一个问题。基本上,我NS_ERROR_ILLEGAL_VALUE在发送请求时收到’ ‘错误,我不知道发生了什么。
NS_ERROR_ILLEGAL_VALUE
HTML页面(已修剪但显示错误)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Ajax Test</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> var COMPLETE = 4; var OK = 200; function GetXMLHttpRequestObject() { var XMLHttpRequestObject = false; if(window.XMLHttpRequest) { if(typeof XMLHttpRequest != 'undefined') { try { XMLHttpRequestObject = new XMLHttpRequest(); } catch (e) { XMLHttpRequestObject = false; } } } else if (window.ActiveXObject) { try { XMLHttpRequestObject = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { XMLHttpRequestObject = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { XMLHttpRequestObject = false; } } } else { XMLHttpRequestObject = false; } return XMLHttpRequestObject; } //The Main Ajax Object function AjaxRequest(p_RequestMethod, p_DestinationURL) { this.XMLHttpRequestObject = GetXMLHttpRequestObject(); this.RequestedMethod = p_RequestMethod; this.DestinationURL = p_DestinationURL; this.XMLHttpRequestObject.open(this.RequestMethod, this.DestinationURL); this.OnStateChange = function(Callback) { this.XMLHttpRequestObject.onreadystatechange = Callback; } this.Send = function(p_Content) { this.XMLHttpRequestObject.send(p_Content); } this.GetState() { return this.XMLHttpRequestObject.readyState; } this.GetResponseText = function() { return this.XMLHttpRequestObject.responseText; } this.GetResponseStatus = function() { return this.XMLHttpRequestObject.status; } this.GetResponseStatusText = function() { return this.XMLHttpRequestObject.statusText; } } var Request; function GetData() { Request = new AjaxRequest('POST', 'http://www.kalekold.net/ajax/Ajax.php'); Request.OnStateChange = StateChange; Request.Send(); } function StateChange() { window.alert("State: " + Request.GetState()); window.alert("Response: " + Request.GetResponseStatus()); window.alert("Response Text: " + Request.GetResponseStatusText()); if(Request.GetState() == COMPLETE && Request.GetResponseStatus() == OK) { Result = Request.GetResponseText(); window.alert(Result); } } </script> </head> <body> <form> <textarea name="TextArea" rows="10" cols="80"></textarea><br /> <input type="button" value="Load" onClick="GetData();"> </form> </body> </html>
PHP文件:
<?php $XML = <<< PROLOG <?xml version="1.0" encoding="iso-8859-1"?> PROLOG; $XML .= "<results>"; $XML .= "<result>"; $XML .= "<FirstName>Gary</FirstName>"; $XML .= "<SecondName>Willoughby</SecondName>"; $XML .= "<Age>35</Age>"; $XML .= "</result>"; $XML .= "<result>"; $XML .= "<FirstName>Sara</FirstName>"; $XML .= "<SecondName>Gostick</SecondName>"; $XML .= "<Age>35</Age>"; $XML .= "</result>"; $XML .= "</results>"; header("Content-Type: text/xml"); echo $XML; ?>
完整错误:
uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXMLHttpRequest.open]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: http://www.kalekold.net/ajax/ :: AjaxRequest :: line 63" data: no] Line 0
我只是看不到哪里出了问题,有什么想法吗?
异常“组件返回的故障代码:0x80070057(NS_ERROR_ILLEGAL_VALUE)”是由于将非法值传递到open方法的调用中引起的。
查看您的代码,我发现拼写错误:
this.RequestedMethod = p_RequestMethod; this.DestinationURL = p_DestinationURL; this.XMLHttpRequestObject.open(this.RequestMethod,this.DestinationURL);
请参阅将this.RequestedMethod属性设置为p_RequestMethod,并将this.RequestMethod传递到“ open”方法的调用中。
另外,我建议不要使用开放源代码XMLHttpRequest.js-符合标准的跨浏览器XMLHttpRequest对象实现,而不是创建自己的包装器,该实现还修复了浏览器的本机XMLHttpRequest对象实现的大约20个错误。