Jquery表单数据不通过ajax POST方法发送

时间:2014-03-20 14:38:16

标签: javascript php jquery ajax

我有一个通过ajax将数据发送到php的表单,非常简单。但是,当我提交表单时,数据不会被发送。

使用Javascript:

$(document).ready(function(e) {
    $('#update').submit(function(event) {
        event.preventDefault();
        var fd = new FormData($('#update')[0]);
        alert(fd);
        $.ajax({
            url:'func/update.php?id=<?php echo md5($result['id']);?>',
            processData: false,
            contentType: false,
            data: fd,
            type:'POST',
            dataType:"JSON",
            success:function(json){

            }
        });
    });
});

PHP:

if(empty($_POST)){
    echo 'No post data';
}else{
    echo 'data sent';
}
print_r($_POST);

php是非常基本的,看看发生了什么。我通常会将我的数据附加到单个字段中。

数据:{a:a,b:b,c:c} ......等等。

HTML:

<form id="updateStaff">
Profile Picture<br /><img id="pp_img_display" src="../images/<?php echo $result['pp'];?>" width="100px" /><br /><small>Upload a new image</small><br/><input onchange="uploadImage()" type="file" id="file" /><input type="hidden" id="pp_img" value="<?php echo $result['pp']; ?>" /><br/><small>upload .jpg .png .jpeg only</small><br /><div class="form_err" id="image_err"></div>
Name: <select id="prefix" required="required">
<option><?php echo $result['prefix']; ?></option>
<?php $pre = array('Mr','Mrs','Miss','Ms');
for($x = 0; $x < count($pre); $x++){
    if($pre[$x] != $result['prefix']){
        echo '<option>'.$pre[$x].'</option>';
    }
}?>
</select>&nbsp;
<input type="text" id="f_name" placeholder="First Name" value="<?php echo $result['f_name'];?>" required="required" />&nbsp;
<input type="text" id="l_name" placeholder="Last Name" value="<?php echo $result['l_name'];?>" required="required" /><br/>

Job Title: <input type="text" id="job" required="required" placeholder="Job Tilte" value="<?php echo $result['job_title']; ?>" />
<br/>
Years of Experience: <input type="number" id="xp" required="required" placeholder="1" value="<?php echo (int)$result['xp'];?>" />
<p><input type="submit" value="Update" />&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="Cancel" onclick="history.go(-1);"/></p>

</form>

我原以为formData会是一种较短的方式。

2 个答案:

答案 0 :(得分:1)

要发送,元素需要name属性:

<input name="myInputSend" type="text" id="f_name" placeholder="First Name" value="<?php echo $result['f_name'];?>" required="required" />

答案 1 :(得分:0)

在项目中添加this first answer之类的内容后,可以将名称前缀应用于部分视图,您可以按原样发布。

旁注

如果你进入那些部分视图中的可变长度列表,它就不再那么容易了。

  1. 您希望向控制器发送前缀,以便将新的htmlNamePrefix正确添加到新的部分视图中。
  2. 为了在我创建this helper $.fn()
  3. 的情况下轻松发帖

    辅助函数将re-base缺少/添加名称索引,以便partial内的parenting form个视图(即使是部分视图,具有部分视图)发回应该通过它。 (为早期阶段道歉并搞砸了评论)。