没有警告声明,Ajax请求不能正常工作

时间:2014-11-17 12:32:22

标签: javascript php jquery ajax

我遇到AJAX电话的问题。我正在尝试访问HTML的输入 表单元素并使用PHP脚本将其写入数据库。

我的JS代码看起来像这样......

function getWriteValues() {

    var x = document.getElementById("eingabemaske");
    var jqxhr = $.post( "source/form_handler.php", 
                         $( "#eingabemaske" ).serialize() );    

    alert( 'Eintragung erfolgreich durchlaufen' );
}

PHP部分并不有趣,因为除了数据库插入之外什么也没发生。

现在我的问题。该功能使它应该做的事情。但是,当我删除 alert() 语句时,无处可读。这意味着没有任何内容写入数据库并且无法进行ajax调用。我无法弄清楚问题出在哪里。 我在版本2.1.1中使用了jQuery。

4 个答案:

答案 0 :(得分:2)

点击提交按钮时:

  1. 运行JS
  2. 发送Ajax HTTP请求
  3. 提交表格
  4. 离开当前页面
  5. 取消Ajax HTTP请求,因为没有任何东西可以处理它。
  6. 或者:

    • Prevent the default action提交按钮,因此您不会离开页面
    • 摆脱JS并在您在表单action中指定的程序中插入数据库

答案 1 :(得分:0)

如果表单已提交,您是否调用getWriteValues()? 如果是这样,请不要忘记返回false;

答案 2 :(得分:0)

  1. 检查你的html"名称"是否为每个表单元素定义属性,因为serialize()接受元素名称及其值。
  2. 检查您是否在getWriteValues()
  3. 中获取值
  4. 验证这些值是否已传递给form_handler.php脚本。
  5. 示例:

    <form id="eingabemaske">
        <input id="abc" name="abc" value="test" />
        <input type="button" id="submit" name="submit" value="Submit" />
    </form>
    
    <script type="text/javascript">
    $(function(){
        $('#submit').on('click',function(e){
            e.preventDefault();
            getWriteValues();
        });
    });
    
    function getWriteValues() {
    
        console.log($( "#eingabemaske" ).serialize());
        var jqxhr = $.post( "form_handler.php", 
                             $( "#eingabemaske" ).serialize() );    
    
        //alert( 'Eintragung erfolgreich durchlaufen' );
    }
    
    </script>
    

    在php脚本中

    print_r($_REQUEST);
    

答案 3 :(得分:0)

这可能是由于警报消息为ajax提供时间来执行其工作。请检查ajax之前和之后发生的所有过程。另外,当你从提交按钮调用ajax时(我想你已经从&#34; onsubmit&#34;表单的属性调用了这个函数),可能是在ajax完成之前提交表单。请在函数结束时返回false以进一步停止函数处理。