Ajax 需要结合2个jQuery脚本和行为的帮助吗
我需要使用以下两种脚本的组合,但尽管我已经完成了所有的组合,我还是无法让它100%工作 我使用一个颜色框来显示产品详细信息页面,其中有一个带有各种字段的表单,用于将项目添加到购物车中。提交表单后,我希望显示一个警报,然后关闭colorbox,以便基础页面(在forst位置打开colorbox)保持原样 用这个脚本Ajax 需要结合2个jQuery脚本和行为的帮助吗,ajax,jquery,post,character-encoding,Ajax,Jquery,Post,Character Encoding,我需要使用以下两种脚本的组合,但尽管我已经完成了所有的组合,我还是无法让它100%工作 我使用一个颜色框来显示产品详细信息页面,其中有一个带有各种字段的表单,用于将项目添加到购物车中。提交表单后,我希望显示一个警报,然后关闭colorbox,以便基础页面(在forst位置打开colorbox)保持原样 用这个脚本 $("#productadd").submit(function(){ // WORKS FINE EXCEPT THE ENCODING $.post( $(this).
$("#productadd").submit(function(){ // WORKS FINE EXCEPT THE ENCODING
$.post(
$(this).attr('action'),
$(this).serialize(),
function(data){
alert('Product was added to your order');
$().colorbox.close();
});
除了编码(在我的例子中是iso-8859-7(希腊语)外,其他一切都很好。
如果我使用这个脚本,那么编码是可以的,但是帖子是使用默认行为进行的,即重定向到表单操作中定义的url
$("#productadd").submit(function(){ //ENCODING OK, COLORBOX.CLOSE() AND ALERT FAIL
$.ajax({
data: data,
type: "POST",
url: $(this).attr('action'),
dataType: 'json',
beforeSend : function(xhr) {
xhr.setRequestHeader('Accept', "text/html; charset=iso-8859-7");
},
success: function(json) {
alert('Product added to cart!'),
$().colorbox.close(),
itemAddCallback(json);
},
error: function (xhr, textStatus, errorThrown) {
$("#error").html(xhr.responseText);
}
});
如果xhr.setRequestHeader('Accept',“text/html;charset=iso-8859-7”)有一个jQuery等价物,我会非常乐意使用它。另外,我应该声明什么为数据:这样我就不会得到“数据未定义”错误了?(尽管有错误,date提交罚款)
更新:根据目前为止回答者的各种建议,我的代码如下所示:
$("#productadd").submit(function(){
$.ajax({
data: $(this).serialize(),
type: "POST",
url: $(this).attr('action'),
dataType: 'text',
mimeType: "text/html; iso-8859-7",
success: function() {
alert('Item added to your order'),
$().colorbox.close();
},
error: function (xhr, textStatus, errorThrown) {
$("#error").html(xhr.responseText);
}
});
我唯一的问题是,尽管它提交并显示警报等,但提交的数据是用utf-8而不是iso-8859-7编码的,有什么想法吗 请检查文档: 查找mimeType属性 mimeType(added 1.5.1)String A mime type to override the XHR mime type.
在速记POST请求中,您将
$(this).serialize()
作为数据发送,因此我认为您希望在另一个请求中发送相同的表单数据
要调试请求,请使用浏览器的“网络”面板,找出请求是否实际发出以及响应是什么(F12,然后是“网络>XHR”)
希望这有帮助 谢谢你,小费不错。然而,我的主要问题仍然存在。除了这个帖子,我没有看到任何请求。我的代码是否正确,是否应该将对警报的调用放在其他函数中?是否已将数据参数设置为$(this).serialize()?响应的状态码是什么?好的,我现在就知道了,状态码200等等,我在开发人员工具中正确地看到了post值,但在我的页面中它们显示为utf-8。所以,为了缩小范围,我在ajax中寻找正确的mimetype和/或数据类型,但我无法确定它。以后可能会更好,但永远不会。。。无论如何,请检查答案。
$.ajax({
data: data,
type: "POST",
mimeType: "text/html; charset=iso-8859-7"...