【问题标题】:Javascript calls form submit -> calls -> Javascript (ajax call) not getting returns from ajax callJavascript 调用表单提交 -> 调用 -> Javascript(ajax 调用)未从 ajax 调用获得返回
【发布时间】:2026-01-10 23:10:01
【问题描述】:

我在<a> 中有一个<span>

 <a class="small-yellow-button float-right" id="signin" href="javascript:void(0);">
   <span>Sign In</span>
 </a>

调用者:

$(document).ready(function(){
    $("#signin").click(function() {
    $('#form-signin').submit(); 
    });
});

调用:

<form method="post" action="" id="form-signin" onSubmit="login(); return false;" accept-charset="UTF-8" autocomplete="on">

function login()
{
   $.post(....), function(data)
{
  // code does NOT reach here.
  alert(data);
}
} 

这个函数发出一个 ajax 调用,我在服务器上得到请求并返回正确的响应,但不知何故我没有在这个函数中得到响应。我知道这个函数 login() 有效,因为我可以直接调用它,但不知何故,我必须为我的项目遍历 javascript->form submit->javascript 的循环。

请帮忙...

【问题讨论】:

    标签: javascript jquery form-submit


    【解决方案1】:

    我只是从表单中删除整个 onsubmit 并改用它:

    $(document).ready(function(){
        $("#signin").click(login);
    });
    

    为了防止表单正常提交,请在文档就绪块内添加:

    $('#form-signin').submit(function(){
        return false;
    }); 
    

    现在,您说login 函数有效,但您为它发布的代码肯定不...

    【讨论】:

    • 我要保留javascript的设计-> form.submit() -> javascript.
    • 是的,我没有发布完整的代码,但整个 login() 是正确的。
    • form.submit() 只是调用login 并阻止默认行为!
    • @bfavaretto 它没有默认行为,action 为空
    • @PitaJ 那么默认行为是提交到当前页面,不是吗?
    【解决方案2】:

    应该是:

    $.post( url , data , function(data) { 
       //code
     });
    

    【讨论】:

    • 是的,我没有发布完整的代码,但整个 login() 是正确的。
    • @user1418326 你有任何错误吗?像“ReferenceError: data is not defined”或“Unexpected token (”
    • 没有错误。我通过服务器端代码调试,它发出响应,但javascript函数无法接收响应。