我编写了一些jQuery代码,该代码将AJAX请求发送到CMS,以根据请求中发送的操作触发不同的PHP操作。
这很好,但是该表单的值未随AJAX帖子一起发送。我尝试了各种不同的方法,例如新表单和序列化表单数据,但似乎没有任何效果。
我认为只需将其包含在通话中就可以了:
$formData = $('#checkout-cart').serialize();
data: $formData,
有人可以指出我的正确方向吗?
var formSubmit = {
config: {
guestUser: '.create-guest-user',
},
initialize: function () {
var $this = this;
$(this.config.guestUser).click(function(event) {
event.preventDefault();
$this.createGuestUser();
return false;
});
},
// Create Guest User
createGuestUser: function (elem) {
$.post(window.location.href, {
type: 'ajax',
data: $formData,
url: window.location.href,
action: 'createGuestUser',
}).done(function (response) {
$('.create-guest-user').addClass('disabled');
});
}
};
$(document).ready(function () {
formSubmit.initialize();
});
HTML
<form id="checkout-form" action="cart/checkout/" method="post">
<div class="row">
<div class="col-sm-6">
<fieldset id="account">
<legend>Your Personal Details</legend>
<div class="form-group" style="display: none;">
<label class="control-label">Customer Group</label>
<div class="radio">
<label>
<input type="radio" name="customer_group_id" value="1" checked="checked">
Default
</label>
</div>
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-firstname">First Name</label>
<input type="text" name="firstname" value="" placeholder="First Name" id="input-payment-firstname" class="form-control">
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-lastname">Last Name</label>
<input type="text" name="lastname" value="" placeholder="Last Name" id="input-payment-lastname" class="form-control">
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-email">E-Mail</label>
<input type="text" name="email" value="" placeholder="E-Mail" id="input-payment-email" class="form-control">
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-telephone">Telephone</label>
<input type="text" name="telephone" value="" placeholder="Telephone" id="input-payment-telephone" class="form-control">
</div>
</fieldset>
</div>
<div class="col-sm-6">
<fieldset id="address" class="required">
<legend>Your Address</legend>
<div class="form-group">
<label class="control-label" for="input-payment-company">Company</label>
<input type="text" name="company" value="" placeholder="Company" id="input-payment-company" class="form-control">
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-address-1">Address 1</label>
<input type="text" name="address_1" value="" placeholder="Address 1" id="input-payment-address-1" class="form-control">
</div>
<div class="form-group">
<label class="control-label" for="input-payment-address-2">Address 2</label>
<input type="text" name="address_2" value="" placeholder="Address 2" id="input-payment-address-2" class="form-control">
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-city">City</label>
<input type="text" name="city" value="" placeholder="City" id="input-payment-city" class="form-control">
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-postcode">Post Code</label>
<input type="text" name="postcode" value="" placeholder="Post Code" id="input-payment-postcode" class="form-control">
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-country">Country</label>
<select name="country_id" value="" id="input-payment-country" class="form-control">
<option value="244">Aaland Islands</option><option value="1">Afghanistan</option>
</select>
</div>
<div class="form-group required">
<label class="control-label" for="input-payment-zone">Region / State</label>
<select name="zone_id" value="" id="input-payment-zone" class="form-control">
</select>
</div>
</fieldset>
</div>
</div>
<div class="buttons">
<div class="pull-right">
<button id="button-guest" class="btn btn-primary create-guest-user get-shipping-methods" data-loading-text="Loading...">Continue</button>
</div>
</div>
</form>
答案 0 :(得分:2)
请将url属性添加到您的$.post
var formSubmit = {
config: {
guestUser: '.create-guest-user',
},
initialize: function () {
var $this = this;
$(this.config.guestUser).click(function(event) {
event.preventDefault();
$this.createGuestUser();
return false;
});
},
// Create Guest User
createGuestUser: function (elem) {
$.ajax({
type: 'post',
data: $formData,
url: 'url.php'
}).done(function (response) {
$('.create-guest-user').addClass('disabled');
});
}
};
$(document).ready(function () {
formSubmit.initialize();
});
答案 1 :(得分:2)
$.post
的第二个参数只是发布数据,而不是选项参数。如果要传递选项,则需要使用$.ajax
,而不是$.post
。
在进行AJAX调用时,您还需要更新$formData
,否则您将从最初加载页面时获得表单的值。
action
没有$.ajax
选项。如果要添加表单输入中没有的其他POST参数,则需要将它们添加到$formData
。
createGuestUser: function (elem) {
var $formData = 'action=createGuestUser&' + $('#checkout-cart').serialize();
$.ajax({
type: 'post',
data: $formData,
url: window.location.href,
}).done(function (response) {
$('.create-guest-user').addClass('disabled');
});
}