各种jqueryajax表单问题
在让我的表单正确地将变量传递到PHP文件时,我遇到了各种各样的问题。即使它确实通过了,或者最终文件似乎没有发送。我哪里做错了 这是我的联系方式:各种jqueryajax表单问题,jquery,ajax,Jquery,Ajax,在让我的表单正确地将变量传递到PHP文件时,我遇到了各种各样的问题。即使它确实通过了,或者最终文件似乎没有发送。我哪里做错了 这是我的联系方式: <form method="post"> <div id="form_container"> <div id="form_quote" action=""> <input type="text" name="name" id="name" value="Name"
<form method="post">
<div id="form_container">
<div id="form_quote" action="">
<input type="text" name="name" id="name" value="Name" title="Name"/>
<input type="text" name="email" id="email" value="Email" title="Email"/>
<input type="text" name="packages" id="packages" value="Packages" title="Packages" class="packages" />
<!-- Package fields go here -->
<input type="text" name="weight" id="weight" value="Total weight (kg)" title="Total weight (kg)" />
<p class="ajaz"><input type="button" name="submit" id="submit" value="Request free callback" class="superbutton" /></p>
<ul id="form_response"><li></li></ul>
</div>
</div>
</form>
然后我使用Ajax将数据发送到我的PHP文件:
jQuery('#form_quote input#submit').click(function() {
jQuery('#form_quote p.ajaz').append('<img src="css/img/ajax-loader.gif" class="loaderIcon" alt="Loading..." />');
var name = $('input#name').val();
var email = $('input#email').val();
var packages = $('input#packages').val();
var packagedims = $('input#packagedims').serialize();
var weight = $('input#weight').val();
alert(packagedims + '&name=' + name + '&email=' + email + '&packages=' + packages + '&weight=' + weight);
jQuery.ajax({
type: 'post',
url: 'sendquote.php',
// Serialize the form and post it to sendquote.php.
data: 'name=' + name + '&email=' + email + '&packages=' + packages + /*'&packagedims=' +*/ packagedims + '&weight=' + weight,
success: function(results) {
jQuery('#form_quote img.loaderIcon').fadeOut(5000);
jQuery('ul#form_response').html(results);
}
}); // end ajax
});
Packagedims似乎不像我想象的那样是一个数组,
也就是说,
packagedims[0]='something',packagedims[1]='something other'
在多个元素上使用相同的ID是无效的
您应该忽略以下内容中的id:
$('.app tbody').append( '<tr><td><span>Package '+ current_number_of_rows +'</span>: <input type="text" name="packagedims[' + current_number_of_rows + ']" value="Dimensions" id="packagedims" title="Package '+ current_number_of_rows +'" /></td></tr>' );
对于like
var name=$('input#name').val()
您可以像这样使用id:var name=$('#name').val()代码>。为什么在示例代码中注释掉了/*'&packagedims='+*/
?您在生产中也对其进行了注释吗?@rav:在您的标记中,id为#packagedims
的输入的确切位置,我找不到它!?位被注释掉的原因是.serialize()代码已经输出了该部分,所以我不需要这样做。我最初包含了它,但有人指出我不需要它。#packagedims的标记在.change事件侦听器中。因此,如果有人在#packages字段中输入2,.change事件侦听器会在一个表中添加一些额外的字段…非常感谢-在使用它之后,这确实完成了工作。我真的应该问,“name^”实际上做什么?@rav:input[name^=“packagedims”]
将选择名称属性以packagedims
开头的所有输入元素。这是最重要的。
$name = trim($_POST['name']);
$email = $_POST['email'];
$packages = $_POST['packages'];
$packagedims = $_POST['packagedims'];
$weight = $_POST['weight'];
$('.app tbody').append( '<tr><td><span>Package '+ current_number_of_rows +'</span>: <input type="text" name="packagedims[' + current_number_of_rows + ']" value="Dimensions" id="packagedims" title="Package '+ current_number_of_rows +'" /></td></tr>' );
$('.app tbody').append( '<tr><td><span>Package '+ current_number_of_rows +'</span>: <input type="text" name="packagedims[' + current_number_of_rows + ']" value="Dimensions" title="Package '+ current_number_of_rows +'" /></td></tr>' );
var packagedims = $('input[name^="packagedims"]').serialize();