【发布时间】:2013-05-23 11:42:47
【问题描述】:
在我的 jquery 移动网络应用程序中,我在用户导航到的每个页面上都包含一个登录表单。我这样做是为了让用户可以随时登录,而不仅仅是在起始页上。
由于我使用自己的 Ajax 逻辑执行表单提交过程,因此我在表单上使用 data-ajax="false" 禁用了 Jquery Mobile Ajax 逻辑。 Ajax 逻辑是用 JavsScript 实现的。在起始页上一切正常,但如果我导航到另一个页面(通过起始页上的链接),我的 JavaScript 不再触发,但表单是通过 Jquery mobile 自己的 Ajax 逻辑提交的(因此它不会' t 工作)。
代码(我在每一页都包含)如下所示:
<div data-role="fieldcontain">
<form id="loginForm" data-ajax="false" onsubmit="login();return false;">
<div data-role="fieldcontain">
<h2>Login</h2>
<label for="textinput1">
Email
</label>
<input name="emaillogin" id="textinput1" placeholder="Email" value=""
type="text">
<label for="textinput2">
Password
</label>
<input name="passwordlogin" id="textinput2" placeholder="Password" value=""
type="password">
</div>
<input type="submit" data-icon="ok" data-iconpos="left" value="OK">
<input type="hidden" name="inputCase" value="login">
</form>
</div>
JavaScript(就在上述代码的末尾)如下所示:
<script>
function login()
{
var request = $.ajax({
url: "../case.php",
type: "POST",
data: $('#loginForm').serialize(),
dataType: "json"
});
request.done(function(msg) {
if(parseInt(msg.status)==1)
{
//top_notification("Willkommen zurück!","success");
window.location="index.php";
}
else if(parseInt(msg.status)==0)
{
alert(msg.text);
}
else {
alert("Gibts nicht");
}
});
request.fail(function(jqXHR, textStatus) {
alert("Fehler");
});
}
</script>
也许我得到了 Jquery Mobile“我们将 page-div 替换为来自新 URL 的另一个 page-div”事情错误,但我这样理解我的整个 JS 逻辑也将从新的资源。
编辑谢谢。我更新了我的 JS 代码,现在看起来像这样:
<script>
$(document).on('pageinit', '[data-role="page"]', function(){
$(document).on('click','#submit-btn',function() {
login();
});
});
function login()
{
var request = $.ajax({
url: "../case.php",
type: "POST",
data: $('#loginForm').serialize(),
dataType: "json"
});
request.done(function(msg) {
if(parseInt(msg.status)==1)
{
//top_notification("Willkommen zurück!","success");
window.location="index.php";
}
else if(parseInt(msg.status)==0)
{
alert(msg.text);
}
else {
alert("Gibts nicht");
}
});
request.fail(function(jqXHR, textStatus) {
alert("Fehler");
});
}
</script>
但是。现在,当我导航到 3 个页面,然后提交登录表单时,我将收到 request.fail 函数的 3 个警报(即使我仅导航到 1 个站点)...之后登录正确!
【问题讨论】:
标签: javascript jquery forms jquery-mobile jquery-mobile-ajax