我在C#中创建了一个Web服务,现在需要从移动应用程序中调用它。我正在尝试创建一个Windows 7移动应用程序,但使用HTML5和Javascript而不是本机代码。 Web服务采用电子邮件和密码两个参数,并返回数据集。我真的没有任何javascript经验(或者网络服务经验,尝试学习这个项目),当试图研究如何使用javascript调用Web服务时,我发现了太多的信息而且不知道从哪里开始,因为还提到了许多其他技术。
所以我决定尝试一下,这是我到目前为止所提出的:
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
// once the device ready event fires, you can safely do your thing! -jm
function onDeviceReady() {
}
function LoginButton_onclick() {
UpdateChildrenApp.PhoneWebServices.GetMyChildren(document.getElementById('EmailBox').value,document.getElementById('PasswordBox').value, OnComplete, OnError)
}
function OnComplete(result) {
for (var i = 0; i < result.tables[0].rows.length; i++)
document.getElementById('Test').innerHTML += ''+(result.tables[0].rows[i].col_name);
}
function OnError(result) {
document.getElementById('Test').innerHTML ='Error :'+result.get_message();
}
</script>
当我按下提交按钮时,此代码不执行任何操作。有人可以指出问题是什么,我如何解决它们或建议我应该研究什么来解决问题并让我走上正轨?任何帮助是极大的赞赏。
答案 0 :(得分:2)
我会使用jQuery来做这种事情。 它提供的ajax功能非常易于使用。 我会使用Revealing Module Pattern(RMP)和2个javascript文件。如果你不熟悉RMP,可以在这里找到一篇很好的文章:
我发现如果我不使用某种结构来使用RMP的js代码,我只会在一个文件中使用一堆函数。
Id有Startup.js和Dataservice.js,它们看起来像这样:
Startup.js
var Startup = function () {
var isValid,
dataObject = {},
populateDataObject = function () {
dataObject.dealer = $("[id$='_txtUser']").val();
dataObject.password = $("[id$='_txtPassword']").val();
},
init = function () {
var dealerId = 0;
$("[id$='_SubmitButton']").bind('click', function (evt) {
evt.preventDefault();
populateDataObject();
if (isValid) {
Dataservice.processLoginRequest(dataObject, processLoginRequestResult);
}
});
};
return {
init: init,
processLoginRequestResult: processLoginRequestResult
};
} ();
Dataservice.js(假设旧学校.asmx,根据需要更改)
var Dataservice = function () {
$.ajaxSetup({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
var serviceBase = '../services/LoginService.asmx/',
processScreenRequest = function (valObject, callback) {
$.ajax({
url: serviceBase + "ProcessLoginRequest",
data: JSON.stringify(valObject),
success: function (json) {
callback(json);
}
});
};
return {
processScreenRequest: processScreenRequest
};
} ();
然后我会在我的html页面中包含对这两个js文件以及jquery的引用。 我希望这会有所帮助。
答案 1 :(得分:2)
首先,如果你想在javascript中使用它,你的webservices应该返回一个JSON对象。 您当然可以返回任何XML /字符串,但使用JSON将很容易使用javascript中的数据。
然后,我建议你使用jquery来调用webservice,因为jquery会为你做很多工作。
阅读this article,它可以帮助您正确设置不同的组件:
答案 2 :(得分:1)
我曾经使用Dojo一次,非常简单,你可以发出xhrget或xhrpost请求。它有一个名为load的函数,它是一个回调函数,您可以在其中修改页面中HTML组件的内容。
使用以下链接:http://dojotoolkit.org/reference-guide/1.7/dojo/xhrGet.html