PDA

View Full Version : چرا متد load درست کار نمیکنه؟



ali_shmki
دوشنبه 28 دی 1388, 00:00 صبح
صفحه ای دارم که از یک button و یک تگ div تشکیل شده.
وقتی روی button کلیک میکنم، صفحه ای از طریق ajax در تگ div لود میشود که حاوی سه لینک است.

میخواهم وقتی روی لینکها کلیک میشود، صفحه جدید در همان div لود شود. کدهای مربوطه رو نوشتم اما صفحه در div لود نمیشه بلکه url کل صفحه عوض میشه. مشکل از کجاست؟

صفحه اول:

<script type="text/javascript" language="javascript">
$(function()
{
$("#button").click(function()
{
$("#c‎ontent").load("link.php");
});
$("a").click(function()
{

var url=$(this).attr("href");
$("#c‎ontent").load(url);
return false;
});
});
</script>

<div id="content" ></div>
<button id="button">click here</button>

صفحه دوم: (link.php)

<a href="http://yahoo.com">yahoo.com</a><br />
<a href="http://google.com">google.com</a><br />
<a href="http://altavista.com">altacista.com</a><br />

mehdi.mousavi
سه شنبه 29 دی 1388, 13:47 عصر
سلام.
ایراد مشخصه. دستور load بصورت Asynchronous کار میکنه... بعبارت دیگه، با فراخوانی load شما دارید میگید کار load کردن شروع بشه، اما قبل از اینکه اینکار تموم بشه، شما دارید Element های a رو گرفته و click event رو به اونها bind می کنید. در صورتیکه هنوز anchor ای وجود نداره. برای رفع این مشکل، می تونید به این شکل عمل کنید:

$(function() {
$("#button").click(function() {
$("#content").load("link.php", function() {
//The link.php has completely loaded.
//You can now manipulate the dom document as you wish
});
});
});

اونجایی که Comment گذاشتم، Element های شما load شده و میتونید تو اون نقطه click event رو به anchor های مورد نظرتون Bind کنید.

موفق باشید.

ali_shmki
سه شنبه 29 دی 1388, 16:22 عصر
اون کارایی که گفتید انجام دادم و به جواب هم رسیدم. اما مشکل دیگه ای که هست اینه که مقصد anchor ما باید صفحه ای از خود سایت باشه و نمیشه صفحه خارجی رو (مثل yahoo) لود کرد. آیا راهی واسه حل این مشکل هست؟

mehdi.mousavi
سه شنبه 29 دی 1388, 16:28 عصر
اون کارایی که گفتید انجام دادم و به جواب هم رسیدم. اما مشکل دیگه ای که هست اینه که مقصد anchor ما باید صفحه ای از خود سایت باشه و نمیشه صفحه خارجی رو (مثل yahoo) لود کرد. آیا راهی واسه حل این مشکل هست؟

شما میتونید صفحه yahoo رو توی یک iframe لود کنید. آیا این کارتون رو راه میندازه؟ اگر منظورتون Cross Site Access هستش، لطفا به این تاپیک رجوع کنید (http://barnamenevis.org/forum/showthread.php?t=198200) و آخرین پاسخ منو توی این تاپیک بخونید که به روش JSONP اشاره کردم...

موفق باشید.