2012-02-19 31 views
8

Tôi có một trang web dựa trên php. Như trong, tất cả các trang html là đầu ra thông qua php.PHP + JQuery - Cách sử dụng hai giá trị này cùng nhau? Vui lòng xem ví dụ của tôi

Dưới đây là một ví dụ đơn giản:

<?php 
ob_start(); 

$pageStart = ' 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>MY WEBSITE PAGE</title> 
</head> 
<body> 
<p>CONTENT</p> 
</body> 
</html> 
'; 

echo $pageStart; 
exit; 
?> 

gì tôi muốn làm là tận dụng một số jquery trong trang này.

Vì vậy, một cách tự nhiên nỗ lực đầu tiên của tôi là để bao gồm các kịch bản bên trong của biến php như vậy:

<?php 
ob_start(); 

$pageStart = ' 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 

<script type="text/javascript"> 
    var datefield=document.createElement("input") 
    datefield.setAttribute("type", "date") 
    if (datefield.type!="date"){ //if browser doesn't support input type="date", load files for jQuery UI Date Picker 
     document.write('<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />\n') 
     document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"><\/script>\n') 
     document.write('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"><\/script>\n') 
    } 
</script> 

<script type="text/javascript"> 
if (datefield.type!="date"){ //if browser doesn't support input type="date", initialize date picker widget: 
    jQuery(function($){ //on document.ready 
     $('#birthday').datepicker(); 
    }) 
} 
</script> 

</head> 
<body> 
<p>CONTENT</p> 
</body> 
</html> 
'; 

echo $pageStart; 
exit; 
?> 

Bây giờ, tôi sử dụng trình soạn thảo code dreamweavers, mà do tính năng làm nổi bật cú pháp, sẽ chỉ ra công chúng lỗi cú pháp được tạo ra trong này.

Vì vậy, tôi lúc đầu đã cố gắng cắt giảm các lỗi này. Điều này không thành công.

Vì vậy, tôi đã cố gắng thay đổi "s để 's, và ngược lại, cho đến khi lỗi đã biến mất. Đây không quá vì nó dường như kịch bản sẽ không xác nhận theo cách này.

Vì vậy, tôi đọc một vài hướng dẫn , và phát hiện này một:.

JavaScript and PHP may each bring great potential to any Web development effort, but they don't always play nice together. Read about the problems.

và cách tôi hiểu nó, đó là bạn cần phải bao gồm các js chứ không có nó như một phần của php của bạn trực tiếp

vì vậy, có một tệp được gọi là page.php và một tệp khác được gọi là jquery.php. Vì vậy, tôi quyết định thử và sửa đổi ý tưởng này để giải quyết vấn đề của mình.

Vì vậy, tôi bắt đầu với một cái gì đó như thế này - index.php:

<?php 
ob_start(); 

$pageStart = ' 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>MY WEBSITE PAGE</title> 
'. include $_SERVER['DOCUMENT_ROOT'] . '/../../path/to/include/datepicker.php'.' 
</head> 
<body> 
<p>CONTENT</p> 
</body> 
</html> 
'; 

echo $pageStart; 
exit; 
?> 

Và - datepicker.php:

<script language="Javascript"> 
    var datefield=document.createElement("input") 
    datefield.setAttribute("type", "date") 
    if (datefield.type!="date"){ //if browser doesn't support input type="date", load files for jQuery UI Date Picker 
     document.write('<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />\n') 
     document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"><\/script>\n') 
     document.write('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"><\/script>\n') 
    } 
</script> 
<script language="Javascript"> 
if (datefield.type!="date"){ //if browser doesn't support input type="date", initialize date picker widget: 
    jQuery(function($){ //on document.ready 
     $('#birthday').datepicker(); 
    }) 
} 
</script> 

Bây giờ không có lỗi cú pháp trong hai trang, tuyệt vời ... Vì vậy, tôi thử nó, một nửa mong đợi những điều cuối cùng chỉ làm việc ...

Không ... Lỗi nghiêm trọng: không mở được luồng: Không có tệp hoặc thư mục nào như vậy. Lỗi này liên quan đến việc tôi thêm vào. Vì vậy, được rồi, mặc dù tập tin ở đó, nó không được xác nhận là php bởi vì không có thẻ mở và đóng php.

Vì vậy, tôi thêm chúng ... Annnd ... Một trang đầy lỗi cú pháp một lần nữa!

Vì vậy, câu hỏi của tôi là:

Xin vui lòng chia sẻ một số kiến ​​thức và giải thích cho tôi về quá trình này thực sự hoạt động. Làm thế nào đối phó với tất cả các lỗi cú pháp, và làm thế nào bạn có nghĩa vụ phải đi về một nhiệm vụ như thế này?

Tôi tin rằng nó là có thể, và có nó sẽ ceratinly được dễ dàng hơn nếu tôi đã không xuất ra toàn bộ html thông qua php. Nhưng đây là một ví dụ đơn giản và thiết kế thực tế của tôi là rất phức tạp. Nó đòi hỏi các phần khác nhau của trang phải được chia thành các biến, để đặt các bit và peices đó khi cần, tự động.

Bất kỳ đầu vào, đề xuất hoặc thông tin chi tiết nào sẽ được đánh giá cao; và bất kỳ liên kết đến các trang hoặc hướng dẫn bao gồm điều này cũng sẽ được đánh giá rất nhiều.

Cảm ơn bạn !!

+1

Bạn nên truy cập vào http://www.w3schools.com/php/default.asp và http: //www.w3schools .com/jquery/default.asp –

+1

Hoặc tốt hơn, xem các trang hướng dẫn sử dụng PHP và các trang giao diện jQuery/jQuery: cả hai đều có nhiều ví dụ –

+0

Ngoài ra http://w3fools.com/ –

Trả lời

7

Tất cả những gì bạn cần làm để sử dụng jQuery với PHP là bao gồm tệp javascript jQuery trong tài liệu HTML của bạn trong thẻ đầu. Tôi thực sự sử dụng PHP cùng với jQuery mọi lúc. Và đây là cách tôi làm điều đó. Trong mã của bạn ở trên, có vẻ như bạn có một số vấn đề về thoát với mã của mình. Và nó cũng giống như bạn muốn giữ tiêu đề của trang trong một biến PHP sau đó in nó ra. Bạn không phải làm tất cả những điều đó. Chỉ cần đặt văn bản thuần trong tệp PHP của bạn mà không cần bất kỳ thẻ php nào và nó sẽ hoạt động. Ngoài ra, bạn đang sử dụng một phiên bản cũ của jQuery. Có lẽ nên sử dụng phiên bản mới nhất. Tuy nhiên, nếu bạn cần nó được lưu trữ trong một biến PHP để bạn có thể in nó ra, hãy làm điều này:

SO, đây là một số mã để giúp bạn bắt đầu.

<?php 
$pageStart = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>MY WEBSITE PAGE</title> 
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(e) { 
    $("#date").datepicker(); 
}); 
</script> 
</head> 
<body> 
<input type="text" id="date" name="date" /> 
</body> 
</html>'; 

print $pageStart; 

?> 
+0

Wow, cảm ơn Ray, tôi sẽ phải xem xét kỹ hơn về điều này. –

+0

Ray, Bạn đã xoay xở để cung cấp cho tôi một số hiểu biết sâu sắc. Và bạn hagve giải quyết vấn đề của tôi trong khi làm như vậy! Tôi muốn cảm ơn bạn rất nhiều vì điều đó! Là một trang web không mặc dù, tại sao bạn đã sử dụng in trên echo? –

+2

Tôi không bắt đầu lập trình PHP, PHP tương đối mới đối với tôi (chỉ khoảng 12 năm qua) Vì vậy, việc sử dụng in là một thói quen tôi có từ các ngôn ngữ lập trình khác. Thêm vào đó, vì tôi vẫn còn lập trình bằng các ngôn ngữ khác, tôi sử dụng in vì nó ít hơn tôi phải nhớ. Sự khác biệt giữa bản in và tiếng vang là bản in trả về true và chậm hơn một chút (rất nhỏ). Ngoài ra, với in, tôi có thể viết các câu lệnh như Bạn không thể làm điều đó với tiếng vọng. Vì vậy, đối với tôi, đó là vấn đề về phong cách lập trình và tính linh hoạt cũng như thói quen. Chúc mừng. –

3
<head> 
<script type="text/javascript" 
src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    // javascript & jquery code 
    // even better would be if you would put client code in separate file!!! 
    }); 
</script> 
</head> 
<body> 
<?php 
    echo "bla bla bla"; 
?> 
</body> 

và +1111 để nhận xét của @ Heera Bạn đang bỏ lỡ những điều cơ bản.

+1

Cảm ơn bạn đã trả lời, nó được đánh giá cao. Nhưng bạn đang thiếu những gì tôi đã nói trước đó. Tôi PHẢI có html bên trong của một biến php, điều này là bởi vì thiết kế thực tế là vô cùng phức tạp, và yêu cầu các phần nhất định của trang được tạo động. Tôi đã cố gắng để hiểu các lỗi cú pháp trong điều này, nhiều hơn bất cứ điều gì khác. –

+1

Tôi sẽ đồng ý mặc dù, tôi đang thiếu những điều cơ bản, nhưng nhiều hơn khi nói đến jquery, đây là một cái gì đó tôi có một kiến ​​thức trần. Trong anycase, cảm ơn rất nhiều cho trả lời của bạn! –

1

Sử dụng Heredoc. Hàng nghìn lỗi cú pháp sẽ biến mất.

Xem phiên bản heredoc các trang của bạn,

  1. http://pastie.org/3412925
  2. http://pastie.org/3412929
  3. http://pastie.org/3412935 // Ở đây bạn đã sử dụng include để liên lạc. include không trả lại bất cứ điều gì. Nó chỉ bao gồm. Vì vậy, nó thay đổi khác nhau.
+0

Tôi sẽ xem xét những điều này, cảm ơn bạn rất nhiều! –

+0

Bạn đề cập đến Heredoc đã được giới thiệu của tôi với nó. Mặc dù nó không phải là giải pháp tôi đang tìm kiếm trong trường hợp này. Tôi tích cực rằng nó sẽ được sử dụng với tôi tại một số điểm. Cảm ơn rất nhiều!! :) –

0

Tôi nghĩ rằng nó phải được

. (include ($_SERVER['DOCUMENT_ROOT'] . '/../../path/to/include/datepicker.php')) . 

khác php sẽ cố gắng để bao gồm tất cả những thứ sau cho đến khi l đạt được (thẻ sẽ được hiểu là một phần của tên tập tin).

cũng, về mặt mã php, sau khi tệp được đưa vào (thành công), câu lệnh include được dịch thành 1 dưới dạng số, thay vì nội dung của tệp.

sử dụng

<? $abc <<<qwerty 
... 
... 
... 
qwerty; 
return qwerty; 
?> 

cho tất cả các tập tin mà bạn muốn bao gồm

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