我有一个多部分表单并使用jQuery表单插件。
当用户完成表单的某个部分并单击“继续”时,我希望将该信息发送到服务器,然后在同一页面上提供所提交信息的摘要。使用我当前的代码,除非在提交之前完成所有字段,否则我会收到错误。我的猜测是我的PHP完全错误,而且我在“data:”之后输入的信息也是错误的。
有关如何使其正常工作的任何建议吗?
PHP:
$return['message'] = array();
if ($_POST['markName1']) {
$return['message'][]='Text' . $_POST['markName1'];
}
if ($_POST['markDescription1']) {
$return['message'][]='More text' . $_POST['markDescription1'];
}
if ($_POST['YesNo1']) {
$return['message'][]='' . $_POST['YesNo1'];
}
echo json_encode($return);
jQuery的:
$(form).ajaxSubmit({
type: "POST",
data: {
"markName1" : $('#markName1').val(),
"markDescription1" : $('#markDescription1').val()
},
dataType: 'json',
url: './includes/ajaxtest3.php',
//...
error: function() {alert("error!");},
success: $('#output2').html(data.message.join('<br />'))
//...
HTML:
<form id="mark-form">
<div class="markSelection">
<input type="checkbox" >
<label for="standardCharacter"></label>
<span class="markName-field field">
<label for="markName1" ></label>
<input type="text" name="markName1" id="markName1">
</span>
<label for="markDescription1"></label>
<textarea id="markDescription1" name="markDescription1"></textarea>
<ul class="YesNo">
<li>
<input type="radio" name="YesNo1" value="Yes">
<label for="Yes">Yes</label>
</li>
<li>
<input type="radio" name="YesNo1" value="No">
<label for="No">No</label>
</li>
</ul>
</div>
<div class="step-section">
<p>
<span class="next-step">
<button id="submit-second" class="submit" type="submit" name="next">Next</button>
</span>
</p>
</div>
</form>
答案 0 :(得分:0)
您不需要围绕此markName1:$('#markName1').val()
或markDescription1 : $('#markDescription1').val()
尝试将此功能用于成功回调
success: function(html) {
alert(html);
}
您应该将PHP更改为:
$markName1 = $_POST['markName1'];
$markDescription1 = $_POST['markDescription1'];
$YesNo1 = $_POST['YesNo1'];
if(!empty($markName1)){
echo 'Text' . $markName1;
}
if(!empty($markDescription1)){
echo 'More Text' . $markDescription1;
}
if(!empty($YesNo1)){
echo $YesNo1;
}
注意我将成功函数数据类型更改为html
编辑2
在<form>
之外创建一个按钮,并用以下内容替换你的ajax:
$('#submit-button').click(function() {
$.post('./includes/ajaxtest3.php', $('#mark-form').serialize(), function(html) {
document.getElementById('someDiv').write(html);
}
});