2011-11-01 66 views
8

我一直在絞盡腦汁,幾乎整天搜索谷歌爲什麼這不起作用。作爲一個改進我自己的網站的實驗,我在這裏查看了一個教程http://tutorialzine.com/2009/09/simple-ajax-website-jquery/,最重要的是ajax/jquery部分。試圖讓PHP閱讀AJAX帖子

基本上,該教程的POST與頁碼一起使用,但是我一直試圖將其轉換爲使用頁面名稱。因此,它將需要#!home(以後用於實現谷歌兼容性的hashbangs),並且PHP可以將其解析爲「home.html」並將其加載到內容div中。除了我以外的原因,它是行不通的。我會後我曾試圖對我有利修改的代碼中的相關章節:

從JavaScript加載程序(僅末端部分,我修改):

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

}); 

和整個PHP文件:

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

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

else echo 'There is no such page!'; 

?> 

我想自己學習,弄清楚,但老實說,我不明白:/根據我所知,沒有跨域問題。有人知道我錯過了什麼嗎? 我想問這裏,因爲它可能比那個教程的網站更加漫遊,但是如果我找到一個解決方案,我會去那裏並將它發佈在評論中,以便其他人可以避免我的痛苦。 XD

+0

什麼是你所得到的錯誤訊息? –

+1

本着幫助你自己學習的精神,提示:發送你認爲是的請求,並且你在訪問你認爲你在php中的內容?查看.ajax文檔,使用螢火蟲/等。檢查請求,並調試PHP請求參數/值:) –

+0

猜猜他們會告訴你:) –

回答

6

你需要通過你的POST數據作爲一個關鍵,值對。

嘗試的數據變爲這樣:

data: "datastring="+datastring 
+0

啊,就是這樣,不知道我是否會想出很多年..嘿。謝謝! –

0

您的$_POST正在詢問datastring密鑰,但我看不到您使用您的AJAX發送它。

在你的jQuery AJAX嘗試改變:

data: datastring 

要:

data: 'datastring=' + datastring 
1

你是不是設置了PHP文件正在尋找datastring參數。

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

}); 

你的PHP文件:

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

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

else echo 'There is no such page!'; 

?>