Tôi đã tìm kiếm và đọc hầu hết các chủ đề liên quan, nhưng chúng không phải là những gì tôi đang tìm kiếm.php json_encode & jquery parseJSON vấn đề đơn lẻ
Tôi đã một JSON chuỗi enocded với chức năng json_encode
PHP:
{"casts":["Matthew Modine","Adam Baldwin","Vincent D'Onofrio"],"year":1987}
Tôi đang làm việc với jQuery để đưa các giá trị trong trường thích hợp cũng vậy, trong trường hợp thử nghiệm tôi đã làm dưới đây:
<script>
var obj = jQuery.parseJSON('<?=$data?>');
console.log(obj);
</script>
Giả sử rằng $ data là thế này:
$data =
<<<END
{"casts":["Matthew Modine","Adam Baldwin","Vincent D'Onofrio"],"year":1987}
END;
gì Google chrome c onsole sản xuất trong trường hợp này:
Uncaught SyntaxError: Unexpected identifier
Tuy nhiên khi tôi thực hiện một sự thay đổi trong JSON chuỗi mã hóa - thêm Dấu gạch chéo ngược để trích dẫn duy nhất:
{"casts":["Matthew Modine","Adam Baldwin","Vincent D\'Onofrio"],"year":1987}
điều khiển đầu ra là như bình thường:
Object {casts: Array[3], year: 1987}
casts: Array[3]
year: 1987
Câu hỏi: có phải lỗi này trong bảng điều khiển được mong đợi không? Tôi nghĩ rằng thoát hoặc thay thế '
bằng \'
sẽ rất bẩn!
CẬP NHẬT
Trên thực tế $ data giá trị xuất phát từ một var json_encode($var)
và $ là một mảng!
$data = json_encode($var);
chuỗi json không được xây dựng bằng tay. xem cập nhật xin vui lòng. – revo
+1 không cần phân tích cú pháp - đầu ra của 'json_encode' đã là JavaScript hợp lệ. – cmbuckley
Sẽ tốt nếu chỉ định 'JSON_HEX_TAG | JSON_HEX_AMP'. Ít nhất là trước đây có thể cần thiết để đáp ứng [các hạn chế đối với nội dung của các phần tử 'script'] (http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#restrictions -for-contents-of-script-elements) và cả hai đều cần thiết nếu tài liệu có thể được phân tích cú pháp dưới dạng XML. – PleaseStand