0

別の.jsファイルからAjax呼び出しを行いたい。私はこのようなことをしました:

function ajax(url,success,error)
{
    success+="(data)";
    error+="(xhr, ajaxOptions, thrownError)";

    console.log("Starting AJAX");
    console.log("Success function: " + success);
    console.log("Success function: " + error);

    $.ajax({                                                                   
        crossDomain: true,
        type: 'GET',
        url: url, 
        callback: 'jsonpCallback',
        jsonpCallback: 'jsonpCallback',
        jsonp: '_jsonp',
        scriptCharset: "utf-8",
        contentType:  'application/json',
        dataType: 'jsonp json',
        timeout : 5000,

        success: success_contact(data),
        error: error_contact(),
    });
}

関数success_contactとerrorcontactもあります。私はこのように始めました:

$(document).bind('pageinit', function() {
    ajax('http://topfirma-dev/topfirma-www/services/rest/contact/list','success_contact','error_contact');
});

Ajax呼び出しが呼び出されましたが、エラーがあります:

Uncaught ReferenceError: data is not defined 

そして、ここに私の質問があります。Ajax通話からデータを取得するにはどうすればよいですか?

4

2 に答える 2

3

success_contactおよびが他の場所で定義されている場合error_contactは、それらを関数として呼び出す必要はありません。関数がどれであるかを指定するだけです。

var success_contact = function (data) {
    /* do something */
}

var error_contact = function (jqXHR, textStatus, errorThrown) {
    /* do something */
}

// ...

$.ajax({                                                                   
    crossDomain: true,
    type: 'GET',
    url: url, 
    callback: 'jsonpCallback',
    jsonpCallback: 'jsonpCallback',
    jsonp: '_jsonp',
    scriptCharset: "utf-8",
    contentType:  'application/json',
    dataType: 'jsonp json',
    timeout : 5000,

    success: success_contact,
    error: error_contact,
});
于 2012-09-12T13:59:10.767 に答える
1

ajax呼び出しを行うとき(または関数をインラインで渡すとき)は、関数の名前を成功(およびエラー)プロパティに渡す必要があります。

例えば

$.ajax({                                                                   
    crossDomain: true,
    type: 'GET',
    url: url, 
    callback: 'jsonpCallback',
    jsonpCallback: 'jsonpCallback',
    jsonp: '_jsonp',
    scriptCharset: "utf-8",
    contentType:  'application/json',
    dataType: 'jsonp json',
    timeout : 5000,

    success: success_contact,
    error: error_contact,
});

次に、success_contact(およびerror_contact)関数を宣言する必要があります。

var success_contact = function(data) {
    console.log(data);
};

また:

$.ajax({                                                                   
    crossDomain: true,
    type: 'GET',
    url: url, 
    callback: 'jsonpCallback',
    jsonpCallback: 'jsonpCallback',
    jsonp: '_jsonp',
    scriptCharset: "utf-8",
    contentType:  'application/json',
    dataType: 'jsonp json',
    timeout : 5000,

    success: function(data, textStatus, jqXHR) {
    console.log(data);
    // Do stuff
},
    error: function(jqXHR, textStatus, errorThrown) {
    // Do stuff
}
});
于 2012-09-12T14:00:57.993 に答える