如何在动态使用SMF.Net.WebClient时将对象属性传递给onSyndicationSuccess事件

时间:2014-12-28 22:56:49

标签: object webclient smartface.io

我正在尝试为动态Web请求创建一个中心函数。

function makeWebRequest(remoteURL, requestString, callBackFunction) {
    var myWebRequest = new SMF.Net.WebClient({
        url : remoteURL,
        httpMethod : "POST",
        requestString : requestString,
        requestHeaders : [
            "Content-Type: application/x-www-form-urlencoded"],
        onSyndicationSuccess : callBackFunction,
        onServerError : function (e) {
            alert(e);
        }
    });
    myWebRequest.run(false);
}

调用makeWebRequest时,将callBackFunction传递给它,如;

var remoteURL = "http://parse.com/12/test";
var requestString = "category=news&type=world";

function callBackFunction(e) {
    responseText = this.responseText;

    if (responseText != null) {
      parsedJSON = JSON.parse(responseText);
    }
}

makeWebRequest(remoteURL,requestString,callBackFunction);

应用程序在行上引发错误 responseText = this.responseText;

如何将myWebRequest本身传递给类似的函数?

2 个答案:

答案 0 :(得分:1)

它工作正常。检查你的makeWebRequest函数,必须在Global.js上。还可以使用“var”定义“responseText”变量。

答案 1 :(得分:1)

我使用了你的codeLines。我只是将一个textButton添加到Page1,它适用于Android和iOS。

在Global.js;

function makeWebRequest(remoteURL, requestString, callBackFunction) {
    var myWebRequest = new SMF.Net.WebClient({
        url : remoteURL,
        httpMethod : "POST",
        requestString : requestString,
        requestHeaders : [
            "Content-Type: application/x-www-form-urlencoded"],
        onSyndicationSuccess : callBackFunction,
        onServerError : function (e) {
            alert(e);
        }
    });
    myWebRequest.run(false);
}


var remoteURL = "http://parse.com/12/test";
var requestString = "category=news&type=world";

function callBackFunction(e) {
    var responseText = this.responseText;
    alert(responseText);

    if (responseText != null) {
      parsedJSON = JSON.parse(responseText);
    }
}



function Global_Events_OnStart(e) {
    changeLang(Device.language, true);
    include("BC.js"); //included for future BC support. Removing is not advised.

    //      Comment following block for navigationbar/actionbar sample. Read the JS code file for usage.
    //      Also there is a part of code block in Page1, which should be copied to every page for HeaderBar usage
    load("HeaderBar.js");
    header = new HeaderBar();

    //      Uncomment following block for menu sample. Read the JS code file for usage.
    /*
    load("Menu.js");
    /**/

}
function Global_Events_OnError(e) {
    switch (e.type) {
    case "Server Error":
    case "Size Overflow":
        alert(lang.networkError);
        break;
    default:
        SES.Analytics.eventLog("error", JSON.stringify(e));
        //change the following code for desired generic error messsage
        alert({
            title : lang.applicationError,
            message : e.message + "\n\n*" + e.sourceURL + "\n*" + e.line + "\n*" + e.stack
        });
        break;
    }
}

在Page1.js;

function Page1_Self_OnKeyPress(e) {
    if (e.keyCode === 4) {
        Application.exit();
    }
}
function Page1_Self_OnShow() {
    //Comment following block for removing navigationbar/actionbar sample
    //Copy this code block to every page onShow
    header.init(this);
    header.setTitle("Page1");
    header.setRightItem("RItem");
    header.setLeftItem();
    /**/
}
function Page1_TextButton1_OnPressed(e){
    makeWebRequest(remoteURL,requestString,callBackFunction);
}