Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách lưu trữ giá trị biến JavaScript trong giá trị biến PHP. Vì một chạy ở phía máy chủ và một chạy ở phía máy khách. Hy vọng hướng dẫn này sẽ hữu ích cho bạn và tôi sẽ cố gắng làm cho hướng dẫn này dễ học
Biến JavaScript thành biến PHP
Giả sử chúng tôi có JavaScript và PHP trực tiếp trong cùng một tài liệu, thì PHP sẽ được thực thi trước và chúng tôi biết nó được thực thi ở phía máy chủ và JavaScript sẽ được thực thi thứ hai và chúng tôi biết rằng nó sẽ được thực thi ở phía trình duyệt. Bằng cách này, cả hai sẽ không bao giờ tương tác
Hãy hiểu với một ví dụ
Giả sử tôi khai báo một biến JavaScript và tôi không thể gán giá trị đó cho PHP. Điều này có thể được giải quyết trực tiếp bằng cách sử dụng Ajax. Nhưng vấn đề là tôi không biết Ajax
var myjavascriptVar=123;
Mã số
//USING COOKIE document.cookie = "myjavascriptVar = " + myjavascriptVar
Sử dụng Ajax
Cách lý tưởng nhất để chuyển giá trị biến JavaScript trong biến PHP là chuyển biến JS cho lệnh gọi AJAX. Nhưng để làm điều này, chúng ta cần tải lại trang có biến trong tham số $_GET và truy cập biến trong PHP bằng cách sử dụng $_GET[‘a’]
Các lập trình viên PHP thường gặp sự cố khi cố gắng tạo động mã JavaScript. Vấn đề là một số ký tự cần được thoát trong JavaScript và cả trong PHP. Việc nhân đôi này có thể khó nắm bắt
Thoát khỏi trích dẫn và ngắt dòng
Giả sử bạn bắt đầu với một biến PHP cần được hiển thị trong hộp thoại xác nhận hoặc cảnh báo JavaScript
//USING COOKIE document.cookie = "myjavascriptVar = " + myjavascriptVar1
Cách rõ ràng để biến điều này thành một cảnh báo là
//USING COOKIE document.cookie = "myjavascriptVar = " + myjavascriptVar2
nhưng điều đó dẫn đến mã JavaScript không hợp lệ.
//USING COOKIE document.cookie = "myjavascriptVar = " + myjavascriptVar2
Có hai vấn đề. Thứ nhất, ngắt dòng bên trong một biến JavaScript không phải là một tùy chọn. Chúng sẽ cần được thay thế bằng \n [ký tự đại diện cho dấu ngắt dòng]. Thứ hai, dấu ngoặc kép bên trong văn bản xung đột với dấu ngoặc kép bên ngoài của cuộc gọi cảnh báo
Học hỏi từ những sai lầm của chúng tôi, đây là một số mã thực sự hoạt động
//USING COOKIE document.cookie = "myjavascriptVar = " + myjavascriptVar2
Đoạn mã trên dựa vào PHP được nhúng trong mã HTML. Nếu bạn đang xuất toàn bộ trang từ PHP thì bạn cần tiến thêm một bước
//USING COOKIE document.cookie = "myjavascriptVar = " + myjavascriptVar5
đầu ra bây giờ là
//USING COOKIE document.cookie = "myjavascriptVar = " + myjavascriptVar2
Cách tiếp cận tương tự có thể được áp dụng trong hầu hết mọi tình huống mà PHP cần chuyển các biến sang JavaScript
Khi cố gắng gỡ lỗi loại mã này, trước tiên bạn phải luôn kiểm tra xem mã nào hợp lệ trong JavaScript [hầu hết các trình duyệt hiện đại đều có trình gỡ lỗi tích hợp sẵn cho mã này] và chỉ sau đó mới xem cách nó có thể được tạo từ PHP
Ghi chú. Không cần thiết phải mã hóa các ký tự như & và " thành các thực thể HTML của chúng vì JavaScript là ngôn ngữ riêng biệt với HTML và có thể xử lý chúng mà không gặp vấn đề gì
Cách chuyển một biến từ WP sang js. Xem https. // nhà phát triển. báo chí. org/tham chiếu/chức năng/wp_localize_script/
[@vijayhardaha]
11 tháng, 2 tuần trước
Từ việc truy cập các biến từ tệp này sang tệp khác, bạn sẽ phải sử dụng
var modoShortcode = ;
1 để gọi các biến
var modoShortcode = ;
Trình bắt đầu chuỗi
[@đoạn trích24]
11 tháng, 2 tuần trước
@sterndata Cảm ơn bạn.
Câu hỏi từ ví dụ này https. // nhà phát triển. báo chí. org/reference/functions/wp_localize_script/#comment-1301
Tôi có thể xác định $translation_array trong bất kỳ mẫu thông thường nào không? . php mà thay vào đó là chỉ mục. php
@vijayhardaha
Cảm ơn bạn. Thật thú vị, IIRC đang sử dụng toàn cầu một thông lệ thay vì tránh?
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
Vijay Hardaha
[@vijayhardaha]
11 tháng, 2 tuần trước
đưa mọi thứ vào chỉ mục. php là một ý tưởng tồi. nếu bạn chỉ cần những biến đó trong tệp chân trang thì hãy xác định ở đó trừ khi bạn thực sự cần những thứ đó trong chỉ mục. php
Người kiểm duyệt
[@bcworkz]
11 tháng, 2 tuần trước
Kỹ thuật bản địa hóa tập lệnh đã được thử và thành công, nhưng nó thực sự hơi rắc rối. Nó không nhằm mục đích chuyển các lọ ngẫu nhiên, mà dành cho mục đích đặt tên của nó, bản địa hóa. Bây giờ có một chức năng phù hợp hơn. wp_add_inline_script[]
https. // nhà phát triển. báo chí. org/reference/functions/wp_add_inline_script/
Về cơ bản, nó hoạt động giống như vậy, chỉ là nó được đặt tên hay hơn thôi 🙂
Đảm bảo $modoshortcode1 nằm trong phạm vi của bất kỳ thứ gì PHP đang sử dụng nó. Sử dụng toàn cầu là một cách. Việc sử dụng quá nhiều không được khuyến khích, nhưng nếu bạn cần nó, bạn cần nó
Đồng thời kiểm tra HTML nguồn của trang. Có thể xảy ra trường hợp nhiệm vụ JS kết thúc sau khi tập lệnh sử dụng nó. Khi bạn sử dụng các kỹ thuật tập lệnh bản địa hóa hoặc nội tuyến, các phụ thuộc được quản lý khi tập lệnh được xử lý và bạn sẽ không gặp phải các sự cố xử lý theo thứ tự như vậy
Trình bắt đầu chuỗi snippet24
[@đoạn trích24]
11 tháng, 2 tuần trước
@bcworkz Cảm ơn bạn
Cũng kỳ lạ ngay cả với
$modoshortcode1 = "lista";
$paginashortcode1 = "7";
global $modoshortcode1, $paginashortcode1;
Tôi tiếp tục gặp lỗi tương tự
đưa mọi thứ vào chỉ mục. php là một ý tưởng tồi. nếu bạn chỉ cần những biến đó trong tệp chân trang thì hãy xác định ở đó trừ khi bạn thực sự cần những thứ đó trong chỉ mục. php
mm có lẽ có một cách tốt hơn nhưng tôi không biết về nó
Người kiểm duyệt bcworkz
[@bcworkz]
11 tháng, 2 tuần trước
Việc sử dụng đúng chức năng bản địa hóa hoặc tập lệnh nội tuyến sẽ giải quyết cả hai vấn đề. Bạn thậm chí có thể đưa tập lệnh vào hàng đợi một cách có điều kiện để tập lệnh chỉ xuất hiện trên các trang thực sự sử dụng tập lệnh đó. PHP cho điều này được đặt tốt nhất trong các chức năng của chủ đề con. php hoặc plugin tùy chỉnh mà bạn đã tạo
Vijay Hardaha
[@vijayhardaha]
11 tháng, 2 tuần trước
@snippet24 tốt hơn bạn nên cung cấp ảnh chụp màn hình mã và lỗi của mình. chúng tôi không thể hiểu những gì bạn đang viết trong các tập tin của bạn
Trình bắt đầu chuỗi snippet24
[@đoạn trích24]
11 tháng, 2 tuần trước
Okey chắc chắn rồi và tôi sẽ cung cấp một số ngữ cảnh và mã. Nếu bạn vẫn muốn ảnh chụp màn hình, tôi cũng có thể gửi chúng nhưng tôi hy vọng sẽ tốt hơn với mã bên dưới và mô tả
Tôi đang gọi mã ngắn với thuộc tính của chúng được xác định là biến trước khi thực thi mã ngắn
Như thế này
Mã này đi vào một số mẫu và có hai biến thể cho mỗi mẫu, mỗi mẫu có các thuộc tính khác nhau [ví dụ: các hoạt động trong quá khứ và tương lai. ]
Bây giờ cũng có một kịch bản ở chân trang. php chạy lệnh gọi ajax sau khi thao tác với các biến php đã truyền tùy thuộc vào nút nào được nhấp
Vì vậy, chỉ một phần của nó trông như thế này
var modoShortcode = console.log[**];
var paginasShortcode = "1";
var shortcodeAct = "";
function cargarMasActFuncion[] {
paginasShortcode++;
shortcodeAct = *[actividades_shortcode pagina="${paginasShortcode}" modo="${modoShortcode}" fecha="pasadas"]*;
//console.log[shortcodeAct]
var TipoFuncionAjax = "cargarMasPasadas";
actionAjax[TipoFuncionAjax, shortcodeAct]
}
Chỉnh sửa. tics trở lại được thay thế bằng *
Xin lưu ý rằng tôi đang sử dụng bảng điều khiển. log cho $modoshortcode1 trong tập lệnh và đó là lỗi trả về
Notice: Undefined variable: modoshortcode1 in E:**footer.php on line 164
Việc sử dụng đúng chức năng bản địa hóa hoặc tập lệnh nội tuyến sẽ giải quyết cả hai vấn đề
Được rồi, tôi đang thử tập lệnh nội tuyến
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
Trình bắt đầu chuỗi snippet24
[@đoạn trích24]
11 tháng, 2 tuần trước
Tôi xin lỗi đây là lỗi đầy đủ
________số 8Nhưng tôi không biết tại sao bản sửa lỗi toàn cầu không thực sự hoạt động
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
- Câu trả lời này đã được sửa đổi 11 tháng, 2 tuần trước bởi snippet24 .
Vijay Hardaha
[@vijayhardaha]
11 tháng, 2 tuần trước
Tôi không chắc bạn đang cố gắng làm gì với javascript/jquery đó. Không thể hiểu logic của bạn ở đó. nhưng đây là thông tin về lỗi nhận được
Trong bất cứ thứ gì bạn đang đặt mã PHP đó, nó sẽ như thế này
$modoshortcode1 = 'lista';
$paginashortcode1 = '7';
$shortcodeactpasadas = '[actividades_shortcode pagina="' . $paginashortcode1 . '" modo="' . $modoshortcode1 . '" fecha="pasadas"]';
echo do_shortcode[ $shortcodeactpasadas ];
và php chân trang của bạn sẽ có mã như thế này
//USING COOKIE document.cookie = "myjavascriptVar = " + myjavascriptVar0
Vijay Hardaha
[@vijayhardaha]
11 tháng, 2 tuần trước
Chỉ cần lưu ý nhanh, có một cách tốt hơn để làm mọi việc, nhưng vì tôi không hiểu logic của bạn nên tôi không thể nói nhưng bạn đang làm điều đó có vẻ sai đối với tôi