【问题标题】:Load ~ 400 (Bad Request). XmlHttpRequest works on local, but not on server-side加载 ~ 400(错误请求)。 XmlHttpRequest 适用于本地,但不适用于服务器端
【发布时间】:2015-11-27 08:42:07
【问题描述】:

我正在处理分页或过滤器更改时产品表内容的异步加载(使用 XMLHttpRequest .readystate 和 .responseText)。我编写的功能可以完美运行,但仅限于本地。在 apache/ngnix 服务器端,它返回错误的请求。请帮忙。

function loadContent(link) {

    var http = createRequestObject();
    if( http ) {

        http.open('load', link);
        http.onreadystatechange = function () {

            if(http.readyState == 4) {

                var div = document.createElement('div');
                div.innerHTML = http.responseText;
                var all = div.getElementsByTagName('div');

                for (var i = 0, len = all.length; i < len; i++) {

                   if (all[i] && all[i].getAttribute('id') == 'to-ajax') {

                      var deep = all[i].getElementsByClassName('product-layout col-lg-4');
                      $('.load').before(deep);

                   }
                }
            }
        }

        http.send(null);

    } else {

        document.location = link;

    }
}

function createRequestObject() {
    try { return new XMLHttpRequest() }
    catch(e) {
        try { return new ActiveXObject('Msxml2.XMLHTTP') }
        catch(e) {

            try { return new ActiveXObject('Microsoft.XMLHTTP') }
            catch(e) { return null; }
        }
    }
}

错误警告是指这行代码~ } http.send(null);

似乎问题出在.onreadystatechange 函数上,但不知道如何测试它以确定确切的问题是什么。

【问题讨论】:

  • 我试图重写函数以摆脱 responseText(只是将 responseText 更改为 responseXML),因为它似乎是一个潜在的错误原因。没有帮助

标签: javascript jquery xmlhttprequest activexobject readystate


【解决方案1】:

open 的第一个参数需要是一个包含 HTTP 请求方法的字符串。 "load" 不是 HTTP 请求方法。示例包括 "GET""POST"。无效的 HTTP 可能会导致您的服务器响应错误请求错误。

【讨论】:

  • 在您回答之前解决了它 - 这是 100% 正确的!非常感谢队友!会支持你,但声誉太低,刚刚注册,抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多