2010-03-04 33 views
17

Tôi đang cố gắng bao gồm các biến JavaScript vào mã PHP dưới dạng biến PHP, nhưng tôi đang gặp sự cố khi làm như vậy. Khi nút được nhấp, chức năng sau được gọi là:Làm cách nào để sử dụng biến JavaScript dưới dạng biến PHP?

<script type="text/javascript"> 
    function addTraining(leve, name, date) 
    { 
     var level_var = document.getElementById(leve); 
     var training_name_var = document.getElementById(name); 
     var training_date_var = document.getElementById(date); 

     <?php 
      $result = "INSERT INTO training(level, school_name, training_date) VALUES('level_var', 'training_name_var', 'training_date_var')" or die("Query not possible."); 
     ?> 

</script> 

Có thể không?

+1

đọc này về client vs phía máy chủ: http://stackoverflow.com/questions/2034501/how-does-php-work –

Trả lời

36

PHP được chạy phía máy chủ. JavaScript được chạy phía máy khách trong trình duyệt của người dùng yêu cầu trang. Vào thời điểm JavaScript được thực hiện, không có quyền truy cập vào PHP trên máy chủ nào. Vui lòng đọc bài viết này với các chi tiết về client-side vs server-side coding.

gì sẽ xảy ra trong một nutshell là thế này:

  • Bạn bấm vào một liên kết trong trình duyệt của bạn trên máy tính của bạn dưới bàn của bạn
  • Trình duyệt tạo ra một yêu cầu HTTP và gửi nó đến một máy chủ trên Internet
  • sẽ kiểm tra máy chủ nếu ông có thể xử lý các yêu cầu
  • Nếu yêu cầu là cho một trang PHP, người phiên dịch PHP được bắt đầu
  • các thông dịch viên PHP sẽ chạy tất cả các mã PHP trong trang mà bạn reques ted
  • Các PHP thông dịch viên sẽ không chạy bất kỳ mã JS, bởi vì nó không có đầu mối về nó
  • Các máy chủ sẽ gửi trang lắp ráp bởi người phiên dịch lại cho trình duyệt của bạn
  • Trình duyệt của bạn sẽ hiển thị trang và hiển thị nó để bạn
  • Javascript được thực thi trên máy tính của bạn

trong trường hợp của bạn, PHP sẽ viết mã JS vào trang, vì vậy nó có thể được thực hiện khi trang được kết xuất trong trình duyệt của bạn. Vào thời điểm đó, phần PHP trong đoạn mã JS của bạn không còn tồn tại nữa. Nó đã được thực thi trên máy chủ rồi. Nó tạo ra một biến số $result có chứa một chuỗi truy vấn SQL. Bạn đã không sử dụng nó, vì vậy khi trang được gửi lại cho trình duyệt của bạn, nó đã biến mất. Hãy xem mã nguồn khi trang được hiển thị trong trình duyệt của bạn. Bạn sẽ thấy rằng không có gì ở vị trí bạn đặt mã PHP.

Cách duy nhất để làm những gì bạn đang tìm kiếm để làm là một trong hai:

  • làm một chuyển hướng tới một kịch bản PHP hoặc
  • làm một cuộc gọi của AJAX đến một kịch bản PHP

với các giá trị bạn muốn chèn vào cơ sở dữ liệu.

4

Dường như bạn đang bối rối phía máy khách và mã phía máy chủ. Khi nhấn nút, bạn cần gửi (đăng, nhận) các biến đến máy chủ nơi có thể thực thi php. Bạn có thể gửi trang hoặc sử dụng cuộc gọi ajax để chỉ gửi dữ liệu. -don

3

PHP chạy trên máy chủ. Nó xuất ra một số văn bản (thường). Điều này sau đó được phân tích bởi khách hàng.

Trong và sau khi phân tích cú pháp trên máy khách, JavaScript chạy. Ở giai đoạn này đã quá muộn để kịch bản PHP làm bất cứ điều gì.

Nếu bạn muốn nhận được bất cứ điều gì về PHP bạn cần phải thực hiện một yêu cầu HTTP mới và bao gồm các dữ liệu trong đó (hoặc trong chuỗi truy vấn (GET dữ liệu) hoặc nội dung thư (dữ liệu POST).

Bạn có thể làm điều này bằng cách:

  • vị trí Setting (GET chỉ)
  • Nộp một hình thức (với phương pháp FormElement.submit())
  • Sử dụng các đối tượng XMLHttpRequest (kỹ thuật thường được gọi là Ajax) các thư viện khác nhau làm một số. th e nâng nặng cho bạn ở đây, ví dụ: YUI hoặc jQuery.

Bạn chọn tùy chọn nào, bản chất về cơ bản là giống nhau. Đọc từ $_GET hoặc $_POST, chạy mã cơ sở dữ liệu của bạn, sau đó trả lại một số dữ liệu cho khách hàng.

0

Bạn có thể làm những gì bạn muốn, nhưng không phải như vậy. Những gì bạn cần làm là thực hiện yêu cầu AJAX từ JavaScript quay lại máy chủ trong đó một tập lệnh PHP riêng biệt có thể thực hiện thao tác cơ sở dữ liệu.

1

Tôi đã gặp vấn đề tương tự cách đây vài tuần như của bạn; nhưng tôi đã phát minh ra một giải pháp tuyệt vời để trao đổi các biến giữa PHP và JavaScript. Nó làm việc cho tôi cũng:

  1. Tạo một biểu mẫu ẩn trên một trang HTML

  2. Tạo một Textbox hoặc Textarea ở chỗ biểu mẫu ẩn

  3. Sau khi tất cả các mã của bạn được viết trong kịch bản, lưu trữ giá trị cuối cùng của biến của bạn trong hộp văn bản đó

  4. Sử dụng dòng $ _REQUEST ['hộp văn bản'] để truy cập vào giá trị của biến JavaScript của bạn.

Tôi hy vọng mẹo này phù hợp với bạn.

+0

Can bạn xin vui lòng cho một ví dụ làm việc –

16
<script type="text/javascript"> 
var jvalue = 'this is javascript value'; 

<?php $abc = "<script>document.write(jvalue)</script>"?> 
</script> 
<?php echo 'php_'.$abc;?> 
+8

Điều này là sai trên rất nhiều cấp độ, và lừa đảo –

+3

này thậm chí không phải là một câu trả lời – argentum47

+2

Nó đang làm việc tốt thì tại sao nó không phải là một câu trả lời @ argentum47 –

1

Bạn có thể thực hiện tất cả các giá trị như thế này:

$abc = "<script>document.getElementByID('yourid').value</script>"; 
+0

Tôi đã sử dụng bạn và làm việc. Tôi không biết nếu nó được đề nghị một cách mặc dù. – user1919

+0

Nó không có tác dụng với tôi ... Có cách nào khác không ...? :) –

Các vấn đề liên quan