0

これまで、このコードを使用して、エンコードエラーが発生するまで、カラーボックスウィンドウ内からデータを投稿していました。データは、「ΔΙΧΡΩΜΟ」ではなく「ΞΞΞ§Ξ'Ξ©ΞΞ」として送信されていました。

$("#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);
    }
});

ただし、success:内の呼び出しはいずれも行われず、ページはフォームアクションでURLにリダイレクトされ、alertも$()。colorbox.close()も呼び出されませんが、前のコードでは送信されていました同じウィンドウで(アクションURLにリダイレクトせずに)アラートを表示し、最後にカラーボックスウィンドウを閉じます。助言がありますか?

4

2 に答える 2

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に変更してみてください。

于 2012-07-12T10:14:35.890 に答える
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);
    }
});
});
于 2012-07-12T10:11:40.457 に答える