使用Ajax的替代方式有哪些?

4

我想知道最佳的AJAX调用方法。

目前我有以下代码,它可以正常工作。

$.ajax({

    url: "/rest/computer",
    type: "GET",
    dataType: "json",

    data: {
        assessmentId: "123",
        classroomId:  "234"
    },

    success: function(objects) {


    // .... code ....


    }
});

我目前正在寻找另一种进行Ajax调用的方式。

如果有,我应该使用我的方法吗?

是否应该将Ajax调用移入其自己的函数并进行回调?

对此的任何建议都将不胜感激。


1
更适合在http://codereview.stackexchange.com/上进行。 - Andy
...或者只使用JavaScript。但如果它没有出现问题,为什么要修复它呢? - Ed Heal
1
我从未要求审核我的代码。事实上,我提到它运行良好。 - code-8
1
无论你使用什么,它总是通过XMLHTTPRequest对象进行传输,所以我认为这并不重要。这将取决于个人喜好。 - dmeglio
关于 .done(),你们觉得怎么样? - code-8
显示剩余4条评论
4个回答

9

现代浏览器都支持一种新的异步Fetch API

fetch('./api/projects', {
        method: 'post',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            title: 'Beispielprojekt',
            url: 'http://www.example.com',
        })
    })
    .then(response => { console.log(response); })
    .catch(error => { console.error(error); });

请参阅此帖子了解更多信息。


9

是的,还有其他一些调用ajax的方式。

jQuery

var get_data = function(){
    var result = false;
    $.get('/rest/computer').done(function(awesome_data){
        result = awesome_data;
    });

    return result;
}

$.getJSON

$.getJSON( '/rest/computer', { assessmentId:"123", classroomId:"234"})
  .done( function(resp){
    // handle response here
}).fail(function(){
   alert('Oooops');
});

如果你的代码中没有使用jQuery,那么这篇回答就是为你准备的。你的代码应该类似于这样:
function foo() {
    var httpRequest = new XMLHttpRequest();
    httpRequest.open('GET', "/rest/computer");
    httpRequest.send();
    return httpRequest.responseText;
}

var result = foo(); // always ends up being 'undefined'

2
你是否尝试过第一个示例?并且你是否了解异步模型? - Brad Christie
是的,我在我的项目中某个地方使用了它,但这里我发布的只是替代Ajax调用的示例。 - Bhavin Solanki
1
那你可以发布一个jsFiddle(使用它们的“/echo/”端点),演示如何通过一次调用get_data()在AJAX往返后返回我的结果?我非常感兴趣。 (您的第三个示例也是如此-获取信息而不绑定到readstatechange) - Brad Christie
1
第一个代码不会起作用,因为在异步请求中创建结果时无法从函数返回。建议您阅读如何从异步调用中返回响应 - charlietfl

2

不太清楚你提出问题的背景是什么,但是以下是一个示例,您可以使用:

$.getJSON( url, { assessmentId:"123", classroomId:"234"})
  .done( function(resp){
    // handle response here
}).fail(function(){
   alert('Oooops');
});

$.getJSON是$.ajax的包装器,它简化了需要添加已经预设的许多选项的过程。


2

以下还有一种类型的ajax调用,使用post方法。

var assessmentId = "123"
var formURL = '/rest/computer';
var postData = { "action":"add","data":assessmentId};
$.post(formURL, postData, function( response ) {
    // handle response here 
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接