Ajax表单没有得到php文件的回复

时间:2014-01-24 12:18:29

标签: javascript php jquery ajax forms

此表单工作正常,例如它停止表单提交,控制台日志中没有javascript错误。但是,当我按下提交时,我会收到一条警报。我在互联网上搜索了多种解决方案,他们都为我提供了同样的解决方案。

这是我的Javascript / Html

<script>
$(function(){
    $("#submit").click(function(event){ 
        event.preventDefault();
        $.ajax({
            type:"post",
            url:"templates/process-token.php",
            data:$("#form").serialize(),
            success:function(response){
                alert(response);
            }
        });
    });
});
</script>

<form id="form" method = "post" action = "security_check">
    <input type = "text" name = "fld1" id = "fld1" />
    <input type = "text" name = "result1" id = "result1" value = "value_from_php_page" disabled />
    <input type="submit" value="Submit" id="submit">
</form>

这是PHP,它很简单但不起作用

<?php
    echo $_POST["fld1"];
?>

这里的任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:1)

你可以用JSON两种方式做到这一点。以下是我将如何在JavaScript和PHP中实现此类功能。

jQuery中有一个很棒的功能,它是获取JSON数据的快捷方式。这是$ .ajax专门用于简单调用的快捷方式。

$.getJSON( "templates/process-token.php?"+$("#form").serialize(), function( data ) { alert( data.reponse ) } );

PHP可以返回一个json编码的字符串,因此可以更容易地从JavaScript代码访问它。

<?php echo json_encode( array('response'=>$_POST['fld1']) ); ?>

答案 1 :(得分:1)

data$('#form').serialize()更改为一个测试变量,以便您可以查看导致问题的是JS还是PHP。

在您的PHP页面上:

<?php
   isset($_POST["fld1"]) ? $myvar1 = $_POST["fld1"] : $myvar1 = 'No data passed...';
   echo $myvar1;
?>

这确认 fld1中的$_POST,如果没有,则说明这样做会带走猜测工作......

答案 2 :(得分:0)

仅当文本框#fld1为空时才会发生这种情况。在文本框中键入内容即可。