XMLHttpRequest提示XML文件无关联样式信息错误如何处理
问题原因及修复方案
This XML file does not appear to have any style information associated with it本质是浏览器将接口返回的内容识别为XML格式,但XML没有关联对应的样式渲染文件,就会输出该提示,核心是你请求参数配置错误导致接口返回了XML格式的错误报文。
代码存在的错误点
- 错误1:
XMLHttpRequest.open方法参数错误,第二个参数仅需传入目标请求URL,你错误将HTTP/1.1协议版本拼接进了URL中,导致请求地址非法,API返回错误报文。 - 错误2:请求头声明
Content-Type: application/json,但send方法传入的是纯字符串格式的transactionId,不是合法JSON结构,后端解析参数失败返回XML错误响应。 - 错误3:无需手动设置
Connection: close请求头,该参数由浏览器自动处理,多余的自定义头可能触发API的请求校验拦截。
修正后的代码示例
echo'<script>'; echo 'function ajaxAction(param){'; echo 'var xmlHttp = new XMLHttpRequest();'; // 修正open的URL参数,移除多余的HTTP/1.1 echo 'xmlHttp.open("POST", "http://api.test.co.kr/v1/testpay/card/param/cancel", true);'; echo 'xmlHttp.setRequestHeader("Authorization", "VAN test1:test2");'; echo 'xmlHttp.setRequestHeader("Content-Type", "application/json; charset=UTF-8");'; // 发送前将参数转为合法JSON格式,这里示例假设接口需要transactionId字段,可根据实际接口规则调整 echo 'xmlHttp.send(JSON.stringify({transactionId: param}));'; echo 'xmlHttp.onreadystatechange = function() {'; echo ' if (xmlHttp.readyState === xmlHttp.DONE){'; echo ' if (xmlHttp.status === 200){'; echo ' console.log(xmlHttp.responseText)'; echo ' } else {'; // 增加错误日志输出,方便后续排查 echo ' console.error("请求错误,状态码:" + xmlHttp.status, xmlHttp.responseText)'; echo ' }'; echo ' }'; echo ' }'; echo '}'; echo 'ajaxAction("'.$transactionId.'");'; echo '</script>';
额外排查点
- 确认前端页面域名和
api.test.co.kr是否同源,不同源需要服务端配置CORS跨域允许规则,否则会触发浏览器跨域拦截。 - 确认接口要求的请求参数结构,调整
send方法传入的JSON字段,保证和接口要求一致。
内容的提问来源于stack exchange,提问作者Nino
相关产品推荐
相关产品推荐

