次の 2 つのスクリプトを組み合わせて使用する必要がありますが、これまでに行ったすべての組み合わせにもかかわらず、100% は機能しません。
カラーボックスを使用して、商品をカートに追加するためのさまざまなフィールドを持つフォームがある商品詳細ページを表示します。フォームを送信すると、アラートを表示してからカラーボックスを閉じて、下にあるページ (最初にカラーボックスを開いたページ) がそのままになるようにします。
このスクリプトで
$("#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 があれば、喜んで使用します。また、データとして何を宣言すればよいのでしょうか?「データが定義されていません」というエラーは表示されませんか? (エラーにもかかわらず、日付は問題なく送信されます)。
更新:これまでに回答した人からのさまざまな提案の後、これは私のコードがどのように見えるかです:
$("#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);
}
});
私の唯一の問題は、アラートなどを送信して表示しますが、送信されたデータが iso-8859-7 ではなく utf-8 でエンコードされていることです。