PUT Ajax请求

11

我刚开始做Ajax请求,编写了以下Pastie。第107行是我的$.PUT,它在firebug中抛出一个错误,说$.PUT不是一个函数。就Ajax请求而言,我知道这是错误的,但是我对success函数addCell内部需要做什么感到很困惑。我这样做对吗?

编辑过

function _ajax_request(url, data, callback, type, method) {
    return jQuery.ajax({
        type: 'PUT',
        url: "slot_days/show",
        data: data,
        success: function(data)
        {
callback($.put('/slot_days/show', { '/slot_days/': 'slot_times' }, function(result) 

            {

            });
          )
        }
    });
}

jQuery.extend({
    put: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'PUT');
}});  

你需要的是PUT还是POST? - Akhil Thayyil
3个回答

23

您在这里有一个错误(success函数必须是匿名的):

return 
    jQuery.ajax({
        type: 'PUT',
        url: 'slot_days/show',
        data: data,
        success: function addCell() {

        }
    });

应该是:

function _ajax_request(url, data, callback, method) {
    return jQuery.ajax({
        url: url,
        type: method,
        data: data,
        success: callback
    });
}

并且扩展jQuery:

jQuery.extend({
    put: function(url, data, callback) {
        return _ajax_request(url, data, callback, 'PUT');
}});  

还有一个使用示例:

$.put('/url', { 'foo': 'bar' }, function(result) {
    // do something with the results of the AJAX call
});

@Djj,不,我的意思是你的JavaScript代码无效。问题不在于它是否为空,我们稍后会看到这一点。问题在于你的代码中写了:success: function addCell() { },这是无效的。它必须是success: function () { }。如果你想调用一些作为参数传递的函数,例如:success: callback - Darin Dimitrov
@Djj,当然可以。只需将它作为$.put方法的第三个参数传递:$.put("/" + getDiaryId() + "/slot_days/" + getSlotId + "/slot_times/" + 0, slot_time, addCell); - Darin Dimitrov
成功:addCell($.put("/" + getDiaryId() + "/slot_days/" + getSlotId + "/slot_times/" + 0, slot_time, addCell)) - Deej
@Djj,不应该在成功的回调函数中传递一个函数。应该像这样传递:success: addCell 或者 success: function() { whatever(); } - Darin Dimitrov
Darin,也许你应该在你的回答中添加一个用法示例。实际上,现在应该很清楚了,但还是…… - Sebastian Wramba
显示剩余10条评论

0

看起来你的主文件中没有包含 _ajax_request_PUT.js 文件。这就是为什么函数 $.put 找不到的原因。先把它包含进去,然后你的错误就会消失。


好的,这可能听起来有点傻,但我该怎么做呢? - Deej
就像你包含jQuery一样。<script src="path/to/_ajax_request_PUT.js" type="text/javascript"></script> - Sebastian Wramba
我将文件包含到我的主文件中,仍然收到相同的错误。很可能是与我的成功函数和回调有关。 - Deej
是的,可能是这样,请参考Darin Dimitrov的答案解决这个问题。 - Sebastian Wramba
谢谢您的回复。 - Deej

0

在这里查看简单清晰的答案:https://dev59.com/9mgu5IYBdhLWcg3wOUck#11549679 只需将类型值更改为“PUT”。

此外,还可以处理可能会给其他人带来问题的415响应(它阻止了我)。还有关于发送的数据对象的400响应。


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