Bất cứ khi nào tôi sử dụng php / mysql / jquery để chuyển dữ liệu qua lại, tôi kết thúc bằng cách sử dụng kết hợp mã hóa / thoát sau và nó có vẻ hoạt động tốt đối với tôi.
1) bạn không cần phải làm bất cứ điều gì ở đây, NHƯ VẬY bạn đang gửi một URL (tôi nghĩ điều này chỉ dành cho các yêu cầu GET) - nhưng nếu bạn đang gửi một url, bạn cần sử dụng encodeURIComponent (url), nó sẽ thoát đúng cách &'s và các ký tự đặc biệt trong url (xem thêm tại đây ).
2) Sử dụng mysqli và các tham số ràng buộc, nó sẽ thực hiện tất cả việc thoát cho bạn (đọc về nó tại đây )
3) Tôi luôn sử dụng điều này khi lặp lại dữ liệu vào tệp HTML:
<?php
htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>
Điều này sẽ mã hóa đúng tất cả các ký tự đặc biệt (sai là "không có mã hóa kép"). Ngoài ra, hãy đảm bảo rằng bạn có các thẻ meta UTF-8 thích hợp ở đầu các trang html của bạn.
4) Sử dụng json_encode luôn phải thoát dữ liệu của bạn đúng cách, nhưng tôi sẽ sử dụng mã từ # 3 chỉ để đảm bảo. Nhưng có thể bạn sẽ chỉ cần nó nếu bạn đang trả lại dữ liệu có các ký tự đặc biệt trong đó.