当前位置: 首页 > 面试题库 >

如何将jquery ajax转换为本机javascript?

郝杰
2023-03-14
问题内容

这是我的ajaxHandler,我想将此转换为本地javascript,即使用XMLHttpRequest,但我不明白如何转换。

ajaxHandler = {

  defaultAttributes: {

    type: 'GET',

    url: 'index.php/request',

    datatype: 'json',

    data: {},

    success: null,

    error: function(data) {

      errorHandler.showError('An Error occurred while trying to retreive your requested data, Please try again...');

    },

    timeout: function() {

      errorHandler.showError('The request has been timed out, Please check your Internet connection and try again...');

    }

  },

  sendRequest: function(attributes) {

    Paper.giffyLoading.style.display = 'block';

    if (!attributes.nopopup) {

      if (attributes.loadmsg) {

        Controllers.AnimationController.createProgressBarScreen(attributes.loadmsg);

        attributes.loadmsg = null;

      }

    }

    $.ajax(attributes);

  }

}

我已经尝试像这样转换上面的代码

XMLRequestDefaultHandler = function() {

  var xmlHttp = new XMLHttpRequest();

  xmlHttp.open('GET', 'index.php/request', true);

  xmlHttp.onreadystatechange = function() {

    if (xmlHttp.readyState === 4 || xmlHttp.status === 200) {



    } else {

      errorHandler.showError('An Error occurred while trying to retreive your requested data, Please try again...');





    }

  };

  xmlHttp.send(null);



}

问题答案:

我提取了Jquery的ajax函数,无需使用jquery就可以工作。

并替换$.ajax(attributes);ajax(attributes);

没有JQuery的JQuery的ajax函数:

function ajax(option) { // $.ajax(...) without jquery.
    if (typeof(option.url) == "undefined") {
        try {
            option.url = location.href;
        } catch(e) {
            var ajaxLocation;
            ajaxLocation = document.createElement("a");
            ajaxLocation.href = "";
            option.url = ajaxLocation.href;
        }
    }
    if (typeof(option.type) == "undefined") {
        option.type = "GET";
    }
    if (typeof(option.data) == "undefined") {
        option.data = null;
    } else {
        var data = "";
        for (var x in option.data) {
            if (data != "") {
                data += "&";
            }
            data += encodeURIComponent(x)+"="+encodeURIComponent(option.data[x]);
        };
        option.data = data;
    }
    if (typeof(option.statusCode) == "undefined") { // 4
        option.statusCode = {};
    }
    if (typeof(option.beforeSend) == "undefined") { // 1
        option.beforeSend = function () {};
    }
    if (typeof(option.success) == "undefined") { // 4 et sans erreur
        option.success = function () {};
    }
    if (typeof(option.error) == "undefined") { // 4 et avec erreur
        option.error = function () {};
    }
    if (typeof(option.complete) == "undefined") { // 4
        option.complete = function () {};
    }
    typeof(option.statusCode["404"]);

    var xhr = null;

    if (window.XMLHttpRequest || window.ActiveXObject) {
        if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } }
        else { xhr = new XMLHttpRequest(); }
    } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; }

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 1) {
            option.beforeSend();
        }
        if (xhr.readyState == 4) {
            option.complete(xhr, xhr.status);
            if (xhr.status == 200 || xhr.status == 0) {
                option.success(xhr.responseText);
            } else {
                option.error(xhr.status);
                if (typeof(option.statusCode[xhr.status]) != "undefined") {
                    option.statusCode[xhr.status]();
                }
            }
        }
    };

    if (option.type == "POST") {
        xhr.open(option.type, option.url, true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xhr.send(option.data);
    } else {
        xhr.open(option.type, option.url+option.data, true);
        xhr.send(null);
    }

}


 类似资料:
  • 问题内容: 我在表格中存储了HTML片段。 不是整个页面,没有标签等,只是基本格式。 我希望能够在给定页面上将Html仅显示为文本,而 无需设置格式 (实际上只是前30-50个字符,但这很容易)。 如何将Html中的“文本”作为纯文本放入字符串中? 所以这段代码。 成为: 你好,世界。有没有人在那里? 问题答案: 如果您在谈论标签剥离,那么无需担心标签之类的事情就相对简单了。如果您需要做的就是显示

  • 问题内容: 我在ttf文件中有一种字体,想要生成文本转换为路径的SVG。我不需要图像(因此使用imagettftext或Image Magick字体渲染功能是不够的),我需要可以放大和缩小的形状,我想丢失有关所用字体的信息,并且不想在其中引用它SVG文件(因此此处不能使用字体声明)。可能吗? 问题答案: 我创建了自己的类来处理SVG字体文件并将文本转换为字形。使用示例: 结果示例: 我班的代码:

  • 在我的Spring Boot项目中,我只是直接返回一个列表。然后我可以在Postman中看到JSON响应。我没有做任何事情将Java对象转换为JSON。它是如何工作的?JSON是Java交换数据的默认方式吗? 这是一个控制器示例。 这是我pom.xml的依赖部分

  • 问题内容: 我在mySQL 5.1中有一个数据类型的日期列。如何将其转换为DATE? 这是我到目前为止所拥有的- 得到这个 错误-#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’FROM 7 FOR 4附近使用) 请帮忙。 问题答案: 您可以使用MySQL的功能 尽管我怀疑您使用Unix时间戳会更轻松

  • 问题内容: 有没有一种简单的方法可以避免处理文本编码问题? 问题答案: 您确实无法避免处理文本编码问题,但是Apache Commons中已有一些解决方案: 至: 至: 您只需要选择所需的编码即可。

  • 我正在尝试用react native和firebase创建一个应用程序。我想这个应用程序的功能之一是上传图像的能力。不过,我上传图片到firebase存储时遇到了一些问题。我使用expo的图像拾取器来寻找用户想要上传的图像的路径,但是一旦我有了路径,我不知道如何将它转换成我可以上传到firebase的东西。 有人能帮我把图像的路径转换成我可以用react native上传到firebase存储的东