2015-11-19 81 views
0

我知道在本頁前面討論過的類似問題,但沒有一個真正解決了Laravel平臺上的問題。來自Laravel的AJAX響應的UTF-8編碼問題

我在AJAX響應和特殊字符中遇到問題,當我在瀏覽器中打開響應URL時,特殊字符顯示正確。顯示在沒有AJAXing的頁面中的相同數據庫數據集中的相同字符顯示正確。

// Ajax call to add to myevents section 
public function addtomyeventsform($eventid){ 

    $responseArray = array('eventid'=>$eventid); 
    $response = Response::view('ajax/sportevent_myevent_add',$responseArray)->header('Content-type','text/html; charset=utf-8'); 
    return $response; // utf8_encode($response); // that actually made it worse: 4 squares instead of 2 per charactor 
} 

Screenshot

預覽在Chrome:

enter image description here

我不

這裏是我的相關代碼(根據不同平臺上的其他類似的問題已經修改)不要理解這裏發生的事情。任何人都可以將我指向正確的方向?這是Laravel相關的嗎?

加成

如這裏要求的是JavaScript代碼。

function addtomyevents(eventid){ 
    var ajax_url = '/addtomyevents/'+eventid; 
    console.log (ajax_url); 
    $('body').css('overflow','hidden'); 
    $('body').css('padding-right','10px'); 
    $('#form_center').removeClass('hide'); 
    $('#form_loader').removeClass('hide'); 

    $.ajax({ 
     url:ajax_url, 
     beforeSend: function(xhr) { 
      xhr.overrideMimeType("text/plain; charset=x-user-defined"); 
     } 
    }).done(function(data) { 
     $('#form_container').html(data); 
     $('#form_loader').addClass('hide'); 
     $('#form_container').show('blind', 500); 
     setDetailsbutton(); 
     trackAjax(ajax_url); 
    }); 
} 
+0

什麼是元字符集從頁面的'

''?它是''? – Bogdan

+0

是的它是:查看源代碼:http://hobbyathletes.com/run/media-maraton-de-cordoba-2015 –

+0

這是否發生在其他瀏覽器,或只是在Chrome?在Chrome瀏覽器中,如果您進入_Menu>更多工具>編碼_,它是否被設置爲**自動檢測**,並檢測到** Unicode(UTF-8)**編碼? – Bogdan

回答

2

當您addtomyevents功能在js/ha_allviews.js文件發送AJAX請求你有beforeSend封閉。刪除它,它應該工作:

$.ajax({ 
    url:ajax_url, 
}).done(function(data) { 
    $('#form_container').html(data); 
    $('#form_loader').addClass('hide'); 
    $('#form_container').show('blind', 500); 
    setDetailsbutton(); 
    trackAjax(ajax_url); 
}); 
+0

太棒了,這絕對是正確的:-)。幹得好,非常感謝。不太確定爲什麼我在所有的AJAX調用中都保留了這些內容。我需要在其他AJAX調用中刪除它。非常感謝! –

+0

非常歡迎 – Bogdan