使用ajax在colorbox中提交表单

时间:2012-07-12 10:06:58

标签: php ajax colorbox

到目前为止,我正在使用此代码在彩盒窗口中发布数据,直到我遇到编码错误,数据被提交为“ΞΞΞ§Ξ'Ξ©ΞΞ”而不是'ΔΙΧΡΩΜΟ':

$("#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)并显示警报,最后关闭颜色框窗口。 有什么建议吗?

2 个答案:

答案 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。