非常に単純なことをしようとしています。ユーザーがリンクをクリックし、ファイルアップロード入力付きのミニフォームがその下のどこかに表示されます。Ajaxリクエストは、div内のページ全体を読み込みません。
ただし、私の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>
すべてのヘルプははるかに高く評価されます!
EDIT:
私は私が...パスに問題が絞られていると思います。このページでは、http://bit.ly/dXrGY6がすべて正常に動作し、相対パスを使用しています。 "http:// www ..."や "../ test/....."のような絶対パスで置き換えると、再度誤動作することがあります。私は自分のサイトの別のセクションで絶対パスを使用していますが、それは正常に動作します:http://bit.ly/fCmmjy。なぜここではうまくいかないのかわかりません...
私は何が間違っているのか分かりません。何か案は?
を追加してみてください、それが動作しませんでした。私はdie()の場合にのみ、もう一度試しましたが、どちらもうまくいきませんでした。たぶん、それはコード自体ではなく、ページ構造に関連するものでしょうか?ここでは、別のページ(ソースを表示することができます)で、同じコードを多かれ少なかれhttp://bit.ly/fCmmjy(翻訳を変更するフラグをクリック)しています。そして、ここには現在の問題のあるページがあります(あなたはログインする必要があります - ごめんなさい)http://bit.ly/ijIyc2 – Booya