我有一个PhoneGap应用程序,它接受用户提示值并将该参数上传到我的公司服务器。
启动一个流程,创建一个图表并将其返回给应用程序。我在设置一个启动进程的回调函数时遇到了麻烦。就目前而言,当我使用此代码构建应用程序时,我只是在打开应用程序时出现灰色屏幕。如果我取出onPrompt回调,应用程序会加载,但我无法将用户提示传递给taskParams。
我不确定我做错了什么。
window.navigator.notification.prompt(
new String(), // message
function(answer) {
if (answer.buttonIndex === 1) {
// Ok
locationStr = answer.input1;
answer.executeSql("INSERT INTO cat (Name) VALUES (?)", [locationStr]);
} else {
// Exit
}
}
onPrompt, // callback
"Enter Location Name", //title
["Ok", "Exit"], // button titles
new String() // defaultText
);
var taskParams = {
"Latitude": lat,
"Longitude": lon,
"Location": locationStr
};
function onPrompt() {
domAttr.set(dom.byId("chartLink"), "innerHTML", "Generating Chart...");
window.gp_chart.execute(taskParams, gpChartResultAvailable, gpChartFailure);
}
答案 0 :(得分:0)
您将提示的回调与数据库查询的成功回调混淆。
这里是分开的:
// database setup
var db = window.openDatabase(name, version, displayName, estimatedSize);
window.navigator.notification.prompt(
"Enter Location Name: ", // message
handleLocationPrompt, // callback
"Add location", //title
["Ok", "Exit"] // button titles
);
// handle user's dialog action
function handleLocationPrompt(results) {
if (results.buttonIndex === 1) {
// Ok
addLocationToDB(results.input1);
}
}
function addLocationToDB(locationStr) {
if (!locationStr) return; // don't add empty string
// run query, pass success callback function as 3rd parameter
db.transaction(function(tx) {
tx.executeSql("INSERT INTO cat (Name) VALUES (?)", [locationStr], querySuccess);
});
}
var taskParams = {
"Latitude": lat,
"Longitude": lon,
"Location": locationStr
};
// handle successful db insertion
function querySuccess() {
domAttr.set(dom.byId("chartLink"), "innerHTML", "Generating Chart...");
window.gp_chart.execute(taskParams, gpChartResultAvailable, gpChartFailure);
}
编辑:更新代码以包含与问题无关的数据库代码