从form.serializeArray()获取数据

时间:2013-12-03 03:24:11

标签: javascript php

我需要帮助。为什么我的代码不起作用?从form.serialize获取数据的正确方法是什么?地雷不工作..也正在将它传递给PHP时正确吗?我的PHP代码看起来很糟糕,看起来不是一个好的oop

HTML

 <form action="" name="frm" id="frm" method="post">
            <input type="text" name="title_val" value="" id="title_val"/>
            <a href="javascript:;" title="" id="save">post topic</a> 
        </form>
        <div id="test">
        </div>

的Javascript

$( document ).ready(function() {
        $('#save').click(function() {
            var form = $('#frm');
            $.ajax({
                url: 'topic.php',
                type:'get',
                data: form.serializeArray(),
                success: function(response) {  
                   $('#test').html(response);
                }
            }); 
        }); 

    });

<?php
    class test{

        public function test2($val){
            return $val;
        }
    }

    $test = new test();
    echo $test->test2($_POST['title_val']); 

?>

输出

enter image description here

1 个答案:

答案 0 :(得分:0)

您告诉您的ajax调用将变量作为GET变量发送,然后尝试使用$_POST超全局访问它们。将GET更改为POST

type:'post',

此外,应该注意的是,您将ajax调用绑定到提交按钮上的单击,因此您的表单仍将发布。您应该在表单的提交函数上绑定,并使用preventDefault来阻止表单发布。

$('#frm').submit(function(e) {
    e.preventDefault(); // stop form processing normally
    $.ajax({
        url: 'topic.php',
        type: 'post',
        data: $(this).serializeArray(),
        success: function(response) {  
            $('#test').html(response);
        }
    }); 
});