0

我正在尝试为我的 Windows 8 应用程序创建一个登录页面,我正在使用 Html5 和 javascript.. 所以我尝试使用 winjs.xhr 将文本框中的内容作为变量发布到一个特定的 url,它是一个 php 脚本,所以这是我的url 示例“ http://example.com/api/username=username&password=password ”正在使用 winjs.xhr 将这些变量发布到 url 但即使在 console.log 中也没有得到任何响应

这是我的代码

<script>
function handlelogin(){
    document.getElementById("box").onsubmit = function(){
        if(document.getElementById("email_address").value ==""){
            document.getElementById("errormessage").innerHTML= "Please Provide Your Email Address";
            return false;
        }else{
            var email_address = document.getElementById("email_address");
            var password = document.getElementById("password");
            var formparams = "?username=" + email_address.value + "&password=" + password.value;
            document.getElementById("errormessage").innerHTML = "";
            WinJS.xhr({type: "POST",
                        url: "http://example.com/api/",
                        data: formparams,
                        headers: { "Content-type": "application/x-www-form-urlencoded" }
                        }).then(
                            function (success) {
                                console.log(success.statusText);
                                if(success == 1703){
                                    WinJS.Navigation.navigate("home.html");
                                }
                            },
                            function (error) {
                                console.log(error);
                            }
                        );
        }
    };
}
window.onload = function () {
    handlelogin();
}
</script>


<form id="box" method="post" name="loginform">
            <p>Email address</p>
            <div class="email_address"><input type="text" id="email_address" /></div>
            <p>Password</p>
            <div class="password"><input type="password" id="password" /></div>
            <p><span id="errormessage"></span></p>
            <div class="button"><input type="submit" id="login" value="Sign In"/></div>
            <p>ForgotPassword?</p>
        </form>
4

1 回答 1

0

首先 - 不要使用提交按钮。使用输入类型 =“按钮”。无需提交,您只需阅读页面上的值。

第二 - 为按钮的单击事件附加事件处理程序。为窗口执行此“加载”不是正确的地方。

第三 - 不要为你的 'box' 元素使用 'onsubmit'。这里没有进行表单提交。在 WinJS 中通常不应该有表单提交 - 这是用于将页面发布到服务器的浏览器。您已经在发布您的数据。查看更新的代码:

我强烈建议将所有 javascript 放入单独的文件中,因为您将通过这种方式获得字节码优化。内联 Javascript 未针对下一次加载进行优化。您可以这样做的一种常见方法是在您的 js 文件中包含下面的 onload 代码(我在其中分配 onclick),如下所示

app.onactivated = 功能(参数){
  ..
  ..
  ..

   args.setPromise(WinJS.UI.processAll().then(function () {
     document.getElementById("login").onclick = handlelogin;
  }));

  ..
  ..
  }
};

但是直接针对您上面的问题的答案是:

<脚本>
函数句柄登录(){
    if (document.getElementById("email_address").value == "") {
        document.getElementById("errormessage").innerHTML = "请提供您的电子邮件地址";
        返回假;
    } 别的 {
        var email_address = document.getElementById("email_address");
        var 密码 = document.getElementById("密码");
        var formparams = "?username=" + email_address.value + "&password=" + password.value;
        document.getElementById("errormessage").innerHTML = "";
        WinJS.xhr({
            类型:“发布”,
            网址:“ http://example.com/api/ ” ;,
            数据:表单参数,
            标头:{“内容类型”:“应用程序/x-www-form-urlencoded”}
        })。然后(
            功能(成功){
                console.log(success.statusText);
                如果(成功 == 1703){
                    WinJS.Navigation.navigate("home.html");
                }
            },
                功能(错误){
                    控制台日志(错误);
                }
        );
    }
}

window.onload = 函数(){ document.getElementById("login").onclick = handlelogin; }; </脚本>

查看 App Builder 中讨论 JavaScript 项目的一些会议http://aka.ms/stackbuilder

于 2013-04-30T23:01:03.647 回答