到目前为止,我正在使用此代码在彩盒窗口中发布数据,直到我遇到编码错误,数据被提交为“ΞΞΞ§Ξ'Ξ©ΞΞ”而不是'ΔΙΧΡΩΜΟ':
$("#productadd").submit(function(){
$.post(
$(this).attr('action'),
$(this).serialize(),
function(data){
alert('Product added to cart!');
$().colorbox.close();
}
);
经过一些搜索,我决定将我的代码更改为此,以便我可以在发布时设置编码,但我需要一些帮助来完成它:
$.ajax({
type: "POST",
url: $(this).attr('action'),
contentType: "application/json; charset=iso-8859-7",
dataType: "json",
data: "{id: '" + someId + "'}",
success: function(json) {
alert('Product added to cart!'),
$().colorbox.close(),
$("#success").html("json.length=" + json.length);
itemAddCallback(json);
},
error: function (xhr, textStatus, errorThrown) {
$("#error").html(xhr.responseText);
}
});
但是没有成功内部的调用:是的,页面被重定向到表单操作中的url并且没有调用alert或$(。。colorbox.close(),而使用前面的代码,它用于在同一窗口中提交(没有重定向到操作URL)并显示警报,最后关闭颜色框窗口。 有什么建议吗?
答案 0 :(得分:0)
你必须通过阻止它执行默认操作来阻止正常表单提交, 否则它将作为普通表单提交重定向到表单的URL。
$("#productadd").submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: $(this).attr('action'),
contentType: "application/json; charset=iso-8859-7",
dataType: "json",
data: "{id: '" + someId + "'}",
success: function(json) {
alert('Product added to cart!'),
$().colorbox.close(),
$("#success").html("json.length=" + json.length);
itemAddCallback(json);
},
error: function (xhr, textStatus, errorThrown) {
$("#error").html(xhr.responseText);
}
});
});
答案 1 :(得分:0)
我相信这可以解决您提交表单的问题
$("#productadd").submit(function(event){
event.preventDefault(); // prevent submission of the form and send ajax
$.post(
$(this).attr('action'),
$(this).serialize(),
function(data){
alert('Product added to cart!');
$().colorbox.close();
}
);
至于编码,它可能取决于您获得该结果的浏览器编码,请尝试更改为其他希腊语编码或UTF-8。