Hướng dẫn how can i pass php variable to javascript? - làm cách nào để chuyển biến php sang javascript?

Tôi sẽ thử một câu trả lời đơn giản hơn:

Giải thích về vấn đề

Trước tiên, hãy hiểu luồng các sự kiện khi một trang được phục vụ từ máy chủ của chúng tôi:

  • PHP đầu tiên được chạy, nó tạo ra HTML được phục vụ cho máy khách.
  • Sau đó, HTML được gửi cho máy khách, sau khi PHP được thực hiện với nó, tôi muốn nhấn mạnh rằng một khi mã rời khỏi máy chủ - PHP được thực hiện với nó và không còn có thể truy cập nó nữa.
  • Sau đó, HTML với JavaScript tiếp cận máy khách, có thể thực thi JavaScript trên HTML đó.

Vì vậy, thực sự, điều cốt lõi cần nhớ ở đây là HTTP là không quốc tịch. Khi yêu cầu rời khỏi máy chủ, máy chủ không thể chạm vào nó. Vì vậy, điều đó để lại các lựa chọn của chúng tôi để:HTTP is stateless. Once a request left the server, the server can not touch it. So, that leaves our options to:

  1. Gửi thêm yêu cầu từ khách hàng sau khi yêu cầu ban đầu được thực hiện.
  2. Mã hóa những gì máy chủ đã nói trong yêu cầu ban đầu.

Các giải pháp

Đó là câu hỏi cốt lõi mà bạn nên tự hỏi mình là:

Tôi đang viết một trang web hoặc một ứng dụng?

Các trang web chủ yếu dựa trên trang và thời gian tải trang cần phải nhanh nhất có thể (ví dụ: Wikipedia). Các ứng dụng web là AJAX nặng hơn và thực hiện rất nhiều chuyến đi tròn để có được thông tin nhanh của khách hàng (ví dụ: bảng điều khiển chứng khoán).

Trang mạng

Gửi nhiều yêu cầu hơn từ khách hàng sau khi yêu cầu ban đầu được thực hiện chậm vì nó yêu cầu nhiều yêu cầu HTTP có chi phí đáng kể. Hơn nữa, nó đòi hỏi sự không đồng bộ vì việc đưa ra yêu cầu AJAX yêu cầu một người xử lý khi hoàn thành.slow as it requires more HTTP requests which have significant overhead. Moreover, it requires asynchronousity as making an AJAX request requires a handler for when it's complete.

Tôi không khuyên bạn nên thực hiện một yêu cầu khác trừ khi trang web của bạn là một ứng dụng để lấy thông tin đó từ máy chủ.

Bạn muốn thời gian phản hồi nhanh có tác động rất lớn đến thời gian chuyển đổi và tải. Thực hiện các yêu cầu AJAX chậm cho thời gian hoạt động ban đầu trong trường hợp này và không cần thiết.

Bạn có hai cách để giải quyết vấn đề

  • Đặt cookie - cookie là các tiêu đề được gửi trong các yêu cầu HTTP mà cả máy chủ và máy khách đều có thể đọc. - cookies are headers sent in HTTP requests that both the server and client can read.
  • Mã hóa biến là JSON - JSON trông rất gần với các đối tượng JavaScript và hầu hết các đối tượng JSON là các biến JavaScript hợp lệ. - JSON looks very close to JavaScript objects and most JSON objects are valid JavaScript variables.

Đặt cookie thực sự không khó lắm, bạn chỉ cần gán cho nó một giá trị:

setcookie("MyCookie", $value); // Sets the cookie to the value, remember, do not
                               // Set it with HTTP only to true.

Sau đó, bạn có thể đọc nó bằng JavaScript bằng document.cookie:

Dưới đây là một trình phân tích cú pháp cuộn ngắn, nhưng câu trả lời tôi đã liên kết với ngay trên này đã được thử nghiệm tốt hơn:

var cookies = document.cookie.split(";").
    map(function(el){ return el.split("="); }).
    reduce(function(prev,cur){ prev[cur[0]] = cur[1]; return prev },{});
alert(cookies["MyCookie"]); // Value set with PHP.

Cookie là tốt cho một ít dữ liệu. Đây là những gì dịch vụ theo dõi thường làm.

Khi chúng tôi có nhiều dữ liệu hơn, chúng tôi có thể mã hóa nó với JSON bên trong biến JavaScript thay thế:


Giả sử $valuejson_encode có thể ở phía PHP (thường là). Kỹ thuật này là những gì Stack Overflow làm với trò chuyện của nó chẳng hạn (chỉ sử dụng .NET thay vì PHP).

Đăng kí

Nếu bạn đang viết một ứng dụng - đột nhiên thời gian tải ban đầu không phải lúc nào cũng quan trọng bằng hiệu suất liên tục của ứng dụng và nó bắt đầu trả hết để tải dữ liệu và mã riêng biệt.

Câu trả lời của tôi ở đây giải thích cách tải dữ liệu bằng AJAX trong JavaScript:

function callback(data){
    // What do I do with the response?
}

var httpRequest = new XMLHttpRequest;
httpRequest.onreadystatechange = function(){
    if (httpRequest.readyState === 4) { // Request is done
        if (httpRequest.status === 200) { // successfully
            callback(httpRequest.responseText); // We're calling our method
        }
    }
};
httpRequest.open('GET', "/echo/json");
httpRequest.send();

Hoặc với jQuery:

$.get("/your/url").done(function(data){
    // What do I do with the data?
});

Bây giờ, máy chủ chỉ cần chứa một tuyến/tệp /your/url có chứa mã lấy dữ liệu và thực hiện một cái gì đó với nó, trong trường hợp của bạn:

getValue(); // Makes an API and database call
header("Content-Type: application/json"); // Advise client of response type
echo json_encode($val); // Write it to the output

Bằng cách này, tệp JavaScript của chúng tôi yêu cầu dữ liệu và hiển thị nó thay vì yêu cầu mã hoặc cho bố cục. Điều này là sạch hơn và bắt đầu được đền đáp khi ứng dụng trở nên cao hơn. Nó cũng tách biệt tốt hơn các mối quan tâm và nó cho phép kiểm tra mã phía máy khách mà không có bất kỳ công nghệ phía máy chủ nào liên quan, đó là điểm cộng khác.

PostScript: Bạn phải nhận thức được các vectơ tấn công XSS khi bạn tiêm bất cứ thứ gì từ PHP đến JavaScript. Rất khó để thoát khỏi các giá trị đúng cách và nó nhạy cảm với bối cảnh. Nếu bạn không chắc chắn làm thế nào để đối phó với XSS, hoặc không biết về nó - vui lòng đọc bài viết OWASP này, câu hỏi này và câu hỏi này. You have to be very aware of XSS attack vectors when you inject anything from PHP to JavaScript. It's very hard to escape values properly and it's context sensitive. If you're unsure how to deal with XSS, or unaware of it - please read this OWASP article, this one and this question.

Làm thế nào đặt giá trị biến PHP trong JavaScript?

Để đặt biến PHP trong JavaScript, chúng tôi xác định biến JS và gán giá trị PHP bằng thẻ PHP với dấu ngoặc kép hoặc đôi. Hầu hết thời gian bạn phải đặt giá trị biến PHP trong JavaScript. Nếu chỉ có biến đơn giản như chuỗi hoặc bất kỳ số nguyên nào thì bạn chỉ có thể lặp lại biến JS với thẻ PHP.define a JS variable and assign PHP value using PHP tag with single or double quotes. Most of the time you have to set PHP variable value in JavaScript. If there is only simple variable like string or any integer then you can simply echo on the JS variable with PHP tag.

Tôi có thể sử dụng mã PHP trong JavaScript không?

PHP chạy trên máy chủ trước khi gửi dữ liệu.Vì vậy, có hai cách với việc tương tác với JavaScript với PHP.Giống như trên, bạn có thể tạo JavaScript với PHP theo cùng một kiểu bạn tạo HTML với PHP.Hoặc bạn có thể sử dụng yêu cầu AJAX từ JavaScript để tương tác với máy chủ.you can generate javascript with php in the same fashion you generate HTML with php. Or you can use an AJAX request from javascript to interact with the server.

Làm thế nào tôi có thể giao tiếp giữa PHP và JavaScript?

PHP "là giao tiếp giữa JavaScript và PHP bằng phương thức JQuery Ajax. Khi nhấp vào nút" Gửi đến PHP "sẽ chạy" Send_To_Php () "sẽ lấy giá trị của ID đầu vào" kiểm tra "và gửi qua AJAX, cho"JS_PHP.Php "Tệp. Đến lượt, tệp" JS_PHP.using jQuery Ajax method. When click the "send to php" button will run the "send_to_php ()" that will take the value of the input id "test" and send through ajax, for "js_php. php" file. In turn, the file "js_php.

Bạn có thể chuyển mảng PHP cho JavaScript không?

Chuyển các mảng PHP cho JavaScript rất dễ dàng bằng cách sử dụng ký hiệu đối tượng JavaScript (JSON).Phương pháp 1: Sử dụng hàm json_encode (): hàm json_encode () được sử dụng để trả về biểu diễn JSON của một giá trị hoặc mảng.Hàm có thể lấy cả mảng đơn chiều và đa chiều.. Method 1: Using json_encode() function: The json_encode() function is used to return the JSON representation of a value or array. The function can take both single dimensional and multidimensional arrays.