发布表单的Ajax返回未定义的错误

时间:2012-03-28 10:54:08

标签: php jquery ajax post

我正在尝试使用ajax提交表单。这是我的完整代码

<?php 
    $wparent = "123";
    $method = "sms";
?>

<script type="text/javascript">
    $(document).ready(function(){
        $("#post_<?php echo $wparent;?>").click(function(){
            $('#parentpost-<?php echo $wparent;?>').html('Loading.....');
            $("#parentpost-<?php echo $wparent;?>").load("<?php echo SITE_URL;?>new_ajax/post_reply.php", {message:$("[name=replynote]").val(), method:$("[name=method]").val(), parent:$("[name=parent]").val()}); //end
        }); // end of the main click function
    });
</script>

<?php   
echo "<textarea name='replynote' ></textarea>";
echo "<input type=\"submit\" class=\"post_button\" id=\"post_$wparent\" value=\"post\" />";
echo "<input type=\"button\" class=\"cancel_button\" value=\"Cancel\" />";
?>
<input type='hidden' name='parent' value='<?php echo $wparent;?>' />
<input type="hidden" name="method" value="<?php echo $method;?>" />

当我用firebug检查post变量时,我看到了,它只正确发送方法。所有其他值都以未定义的形式发送。到目前为止我找不到错误。

1 个答案:

答案 0 :(得分:2)

尝试预先填充您传递的data地图:

 $(document).ready(function () {
     $("#post_<?php echo $wparent;?>").click(function () {
         var message = $("[name=replynote]").val();
         var method = $("[name=method]").val();
         var parent = $("[name=parent]").val();
         var data = {
             "message": message,
             "method": method,
             "parent": parent
         };
         $('#parentpost-<?php echo $wparent;?>').html('Loading.....');
         $("#parentpost-<?php echo $wparent;?>").load("<?php echo SITE_URL;?>new_ajax/post_reply.php", data); //end
     }); // end of the main click function
 });

如果data是包含undefined值的对象,则jQuery选择器不起作用。

此外,由于您只使用name属性来查找输入,因此您可能希望在选择器中更具体。

最后,attribute选择器通常需要用引号括起来的属性值,因此请为选择器尝试这些:

     var message = $('textarea[name="replynote"]').val();
     var method = $('input[name="method"]').val();
     var parent = $('input[name="parent"]').val();