可能在不同文件中为ajax-call定义成功处理函数?

时间:2014-01-02 14:29:21

标签: javascript api jquery jquery-callback

我想要两个单独的文件,一个用于ajax-calls(API,jquery),另一个用于可视化数据的代码(jquery,knockoutjs)。 API有一个用于ajax调用的函数,几个参数将被传递给它,包括成功和错误处理程序。 原因:我想在包含客户端代码的文件中定义成功处理程序(应该能够“单独”定义 - 取决于所调用的服务)。

在API文件中:

  var GET_ALL_WORDS = '/dict/rest/dictionary';//get

   ...

    /** Parameters:
    * GET/POST
    * URL
    * data: word record - json OR searchedWord, single word- String OR null
    * successHandler - function handling returned data (json)
    * error-handler - general handler for errors, defined in this file
    **/

  function dictRPCcall(method, url, data, successHandler, failedHandler) {
    console.log("in dictRPCcall");
        $.ajax({
            type: method,
            contentType: "application/json",
            data: data,
            url: url,
            success: successHandler,
            error: failedHandler,
            dataType: "json"
        });
    }

   //functions that will be called by client-side.

    function getWordsRPCcall(successHandler) {
    console.log("in WordsRPCcall")
        dictRPCcall(GET, GET_ALL_WORDS, null, successHandler, failedREST);
        console.log("afer ajax-call in WordsRPCcall")
    }

    function insertWordRecordRPCcall(wordRecord, successHandler) {
        dictRPCcall(POST, INSERT_WORD_RECORD, wordRecord, successHandler, failedREST);
    }
...

在client-js-file中:

    function successHandler(data, textStatus, jqXHR ){
    //handling responded data from Server
    console.log("successHandler " + "textstatus:" +textStatus + "data: " + data);
    }

    ...calling getWordRPCcall and passing in the success-handler ....

问题:

  • 是否可以在另一个文件中定义成功处理程序 ajax-call是?
  • success-handler函数如何访问jqXHR-object 并返回其他参数并传递给 ajax-call的回调函数?
  • 如果不可能 - 我如何设法“动态化”成功处理程序?
  • 我是否完全错误地尝试了这样,只是不好或类似的东西?

如果问题不好,请告诉我,并且需要添加一些信息。 这么久,梅鲁

1 个答案:

答案 0 :(得分:1)

改变

success: successHandler,

为:

  success: function(data, textStatus, jqXHR) { 
      successHandler(data, textStatus, jqXHR); 
   },

这会使调用并传递这些参数。


我们假设此处包含函数successHandler客户端js 已加载并可用。

修改/更新

实际上success: successHandler,越过了参数,因为它 函数( duh me) - 完全相同,把它留在这里,因为,或许可以解释更真实地发生了什么