3

I have a jquery.ajax object in which I want to substitute xhr. However executing the following code gives me an error:

TypeError: Property 'xhr' of object #<Object> is not a function

The relevant code is:

    var req = jQuery.ajaxSettings.xhr();
    req.upload.addEventListener('progress', calendar.check_progress, false);

    $.ajax({
        url: script_root + '_save_file/'+id+'/'+timestamp,
        type: 'POST',
        processData: false,
        contentType: false,
        data: fd,
        xhr: req,
        success: function(data){
            do_something();
        },
        error: function(data){
            console.log(data);
            do_something_else();
        }
    });

xhr is used in other way. See documentation: http://api.jquery.com/jQuery.ajax/

xhr: Function

Default: ActiveXObject when available (IE), the XMLHttpRequest otherwise

Callback for creating the XMLHttpRequest object. Defaults to the ActiveXObject when available (IE), the XMLHttpRequest otherwise. Override to provide your own implementation for XMLHttpRequest or enhancements to the factory.

May be you're looking for something like

xhr: function() {
    var xhr = $.ajaxSettings.xhr();
    xhr.upload.addEventListener('progress', calendar.check_progress, false);
    return myXhr;
},
4

1 に答える 1

2

xhr他の方法で使用されます。ドキュメントを参照してください: http://api.jquery.com/jQuery.ajax/

xhr: 関数

デフォルト: 利用可能な場合は ActiveXObject (IE)、それ以外の場合は XMLHttpRequest

XMLHttpRequest オブジェクトを作成するためのコールバック。利用可能な場合 (IE) は ActiveXObject に、それ以外の場合は XMLHttpRequest にデフォルト設定されます。XMLHttpRequest の独自の実装またはファクトリへの拡張機能を提供するためにオーバーライドします。

あなたは次のようなものを探しているかもしれません

xhr: function() {
    var xhr = $.ajaxSettings.xhr();
    xhr.upload.addEventListener('progress', calendar.check_progress, false);
    return myXhr;
},
于 2012-09-11T16:51:02.090 に答える