2011-11-01 26 views
8

Tôi đã được kệ bộ não của tôi và tìm kiếm google cho gần như cả ngày về lý do tại sao điều này sẽ không hoạt động. Là một thử nghiệm để cải thiện trang web của riêng tôi, tôi đã xem một hướng dẫn tại đây http://tutorialzine.com/2009/09/simple-ajax-website-jquery/ quan trọng nhất là phần ajax/jquery.Đang cố gắng để có được PHP để đọc bài viết AJAX

Về cơ bản, POST của hướng dẫn đó hoạt động với số trang, tuy nhiên tôi đã cố chuyển đổi nó để sử dụng tên trang thay thế. Vì vậy, nó sẽ mất #! Home (hashbangs để thực hiện khả năng tương thích google sau) từ một href và php có thể phân tích nó như là "home.html" và tải nó vào div nội dung. Vì những lý do vượt ra ngoài tôi, nó sẽ không hoạt động. Tôi sẽ đăng các bộ phận liên quan của mã tôi đã cố gắng để thay đổi có lợi cho tôi:

Từ nạp javascript (chỉ phần cuối mà tôi sửa đổi):

var datastring=url.replace('#!',''); //strip the #page part of the hash and leave only the page number 

$('#loading').css('visibility','visible'); //show the rotating gif animation 

$.ajax({ //create an ajax request to load_page.php 
    type: "POST", 
    url: "load_file.php", 
    data: datastring, //with the page number as a parameter 
    dataType: "html", //expect html to be returned 
    async: false, 
    success: function(msg){ 

     if(parseInt(msg)!=0) //if no errors 
     { 
      $('#content').html(msg); //load the returned html into pageContet 
      $('#loading').css('visibility','hidden'); //and hide the rotating gif 
     } 
    } 

}); 

Và toàn bộ tập tin php:

<?php 
$url = $_POST['datastring']; 

if(file_exists(''.$url.'.html')) 
echo file_get_contents(''.$url.'.html'); 

else echo 'There is no such page!'; 

?> 

Tôi muốn tự mình tìm hiểu và tìm hiểu điều này nhưng thành thật mà nói tôi không hiểu:/Không có vấn đề về tên miền chéo theo như tôi có thể nói. Có ai biết tôi đang thiếu gì không? Tôi đã hỏi ở đây vì nó có khả năng được di chuyển nhiều hơn trang web của hướng dẫn đó, mặc dù nếu tôi tìm được giải pháp, tôi sẽ đến đó và đăng nó trong các bình luận để những người khác có thể tránh được nỗi đau của tôi. XD

+0

gì được thông báo lỗi bạn đang nhận được? –

+1

Với tinh thần giúp bạn tự tìm hiểu, gợi ý: là yêu cầu gửi những gì bạn nghĩ là gì và bạn có đang truy cập vào những gì bạn nghĩ mình đang ở trong php không? Kiểm tra các tài liệu .ajax, sử dụng firebug/etc. để kiểm tra yêu cầu và gỡ lỗi các tham số/giá trị yêu cầu php :) –

+0

Đoán chúng sẽ chỉ cho bạn biết :) –

Trả lời

6

Bạn cần phải vượt qua dữ liệu POST của bạn như là một chìa khóa, cặp giá trị.

Hãy thử thay đổi dữ liệu của bạn như thế này:

data: "datastring="+datastring 
+0

Ahhhh đó là nó, không biết nếu tôi đã có thể tìm ra nó cho các lứa tuổi .. heh. Cảm ơn! –

0

$_POST yêu cầu khóa datastring, nhưng tôi không thể thấy bạn gửi bằng AJAX của bạn.

Trong jQuery AJAX của bạn hãy thử thay đổi:

data: datastring 

Để:

data: 'datastring=' + datastring 
1

Bạn chưa thiết lập các tham số datastring rằng file PHP đang tìm kiếm.

Các tập tin js:

var datastring=url.replace('#!',''); //strip the #page part of the hash and leave only the page number 

$('#loading').css('visibility','visible'); //show the rotating gif animation 

$.ajax({ //create an ajax request to load_page.php 
    type: "POST", 
    url: "load_file.php", 
    data: 'datastring='+datastring, //with the page number as a parameter 
    dataType: "html", //expect html to be returned 
    async: false, 
    success: function(msg){ 

     if(parseInt(msg)!=0) //if no errors 
     { 
      $('#content').html(msg); //load the returned html into pageContet 
      $('#loading').css('visibility','hidden'); //and hide the rotating gif 
     } 
    } 

}); 

tập tin php của bạn:

<?php 
$url = $_REQUEST['datastring']; 
echo $url; 

if(file_exists(''.$url.'.html')) 
echo file_get_contents(''.$url.'.html'); 

else echo 'There is no such page!'; 

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