2010-12-20 69 views
0

我想要做一些非常簡單的事情,用戶點擊一個鏈接,並且帶有文件上傳輸入的迷你表單出現在它下面的某處。當Ajax請求不應該加載整個頁面時,它將不會出現

但是,我的ajax代碼不合作。相反,它會加載整個當前(我認爲)頁面。我前一段時間再次遇到了這個問題,並且我設法解決了這個問題,但是對於我的生活,我不記得我是如何做到的。

現在真奇怪的是,當我在我的本地計算機上嘗試它時,它工作正常,但在實際的Web服務器上卻沒有。

代碼:

function ajaxRequest(targetUri, parameters, cbFunction){ 

if(window.XMLHttpRequest){ 
    request = new XMLHttpRequest(); 
    }else{ 
    request = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 


    request.onreadystatechange = cbFunction; 
    request.open("POST", targetUri, true); 
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    request.send(parameters); 

    } 

function addImage(){ 
    parameters = "action=ajaxRequest"; 
    ajaxRequest("http://www.mysite.com/gallery/addImage.php", parameters, function(){ 
    if((request.readyState == 4) && (request.status == 200)){ 
    document.getElementById("formContainer").innerHTML = request.responseText; 
    } 
    }); 

}

我的PHP文件:

function addImage(){ 
    echo ' 
<div class="mainBlockBody"> 
    <form action="index.php" method="post" enctype="multipart/form-data"> 
    <input type="hidden" name="galleryAction" value="addImage" /> 
    <input type="file" name="upFile" /> 
    <input type="submit" value="Submit" /> 
    </form> 
</div> 
    '; 
} 

if($_POST['action'] == 'ajaxRequest'){ 
    addImage(); 
} 

鏈接&佔位符:

<a href="javascript:addImage()">Add Image</a> 
<div id="formContainer"></div> 

任何幫助,非常感謝!

編輯:

我想我已經把問題縮小到了......路徑。在這個頁面http://bit.ly/dXrGY6它一切正常,使用相對路徑。用絕對路徑(如「http:// www ...」或「../ test/.....」)替換它會再次出現故障。我在我的網站的另一部分使用絕對路徑,它工作正常:http://bit.ly/fCmmjy。我不知道爲什麼它不在這裏工作...

我不明白什麼是錯的。有任何想法嗎?

回答

0

你確定你的php代碼不再吐出html嗎? 嘗試添加一個die

if($_POST['action'] == 'ajaxRequest'){ 
    addImage(); 
    die(); 
} 
+0

我通過之前使用的exit()嘗試這樣做,也沒有工作。我只是在die()的情況下再次嘗試它,但它也沒有工作。也許這與頁面結構有關,而不是代碼本身?這裏或多或少有相同的代碼在另一個頁面上(你可以查看源代碼),正常工作http://bit.ly/fCmmjy(點擊標誌來改變翻譯)。這裏是當前問題的頁面(你必須登錄 - 對不起)http://bit.ly/ijIyc2 – Booya 2010-12-20 15:38:36

相關問題