Hướng dẫn can i pass php variable to javascript? - tôi có thể chuyển biến php sang javascript không?

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.

Bạn có thể chuyển biến PHP cho JavaScript không?

Chúng tôi có thể chuyển dữ liệu từ PHP sang JavaScript theo hai cách tùy thuộc vào tình huống. Trước tiên, chúng tôi có thể truyền dữ liệu bằng toán tử gán đơn giản nếu chúng tôi muốn thực hiện thao tác trên cùng một trang. Lỗ hả chúng tôi có thể chuyển dữ liệu từ PHP sang JavaScript bằng cookie.pass the data using the simple assignment operator if we want to perform the operation on the same page. Else we can pass data from PHP to JavaScript using Cookies.

Tôi có thể chạy mã PHP trong JavaScript không?

Bạn không thể.PHP được thực thi phía máy chủ và nội dung đã hoàn thành được gửi đến trình duyệt.JavaScript chỉ nhìn thấy kết quả cuối cùng.. PHP is executed server side, and the finished content is sent to the browser. Javascript just sees the end result.

Làm thế nào đặt 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.

JavaScript có thể giao tiếp với PHP không?

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.. 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.