通常のテキストリンクがたくさんあり、それらをクリックしてajaxリクエストを送信してページをフェッチできるようにしたいので、HTMLを受け取ったときに親ページの別の部分に動的に読み込むことができます。サーバ。私は頑固で、物事が困難な方法でどのように行われるかを知りたいので、jqueryに煩わされたくありません。私はこれを大ハンマーの方法でやりたいと思っています。しかし、JQueryを使用せずにajaxでリンクを処理する方法についてのコメントは見つかりません。私はこれらすべてを備えた巨大な初心者です。あなたの助けをいただければ幸いです。
質問する
147 次
3 に答える
1
次のいくつかを調べる必要があります
<a>
タグにイベントを添付する- イベント.preventDefault()でリンクをクリックしたときに、リンクがページに移動しないようにする方法
- 要素から属性(hrefなど)を選択する
- jqueryなしでajaxを使用する方法(それはかなり簡単です)
- innerHTMLを使用して、返されたhtmlを現在のページに追加する方法
<a>
基本的に、タグを選択し、クリックイベントを追加します。そのクリックイベントがリンクのデフォルトの動作をトリガーしないようにします。イベントに、リンクが指すページへのAJAXリクエストを発生させます。ページ上のいくつかの要素のinnerHTMLを、AJAXによって返されるコンテンツに設定します。<head>
また、おそらくajaxを介して返された特定のタグ(たとえば)を解析する必要があります。
実際のajaxリクエストに関しては、次のようになります。
//Taken (with modifications) from https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started
/**
* 'standard' way
*/
if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
}
/**
* IE way
*/
else if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!httpRequest) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
function testFunction(data) {
alert(data);
}
httpRequest.onreadystatechange = testFunction;
httpRequest.open('GET', url);
httpRequest.send();
于 2012-09-06T23:13:06.057 に答える
1
1つの提案は、クリックハンドラーをリンク要素にアタッチし、デフォルトの動作を覆すことです。
<div id="links_container">
<a href="http://example.com/page" class="ajax_link">Page</a>
<!-- etc -->
</div>
とJavaScriptで。
// define the click handler
var ajaxLinkHandler = function(e) {
e.preventDefault();// prevent browser from following link
var link = e.target;
var url = link.href;
// I won't take the time to rehash standard JS AJAX here
};
// now attach the handler
var container = document.getElementById("links_container");
var ajaxLinks = container.getElementsByClassName("ajax_link");
for (var i=0; i < ajaxLinks.length; i++) {
ajaxLinks[i].onclick = ajaxLinkHandler;
}
あなたのHTMLがおかしなものにならないので、私はこのアプローチが好きです。
- 純粋なJSのAJAXについては、MDNを参照してください。
于 2012-09-06T23:10:12.173 に答える
-1
javascriptXMLHttpRequestオブジェクトを使用します。 http://www.w3schools.com/ajax/ajax_xmlfile.asp
于 2012-09-06T22:57:53.773 に答える