View Full Version : مشکل JQuery با Ip سایت
cemohsen
دوشنبه 17 آبان 1389, 07:56 صبح
با سلام
من توی یک پروژه تا این لحظه تا جایی که شده از توابع JQuery استفاده کردم
اما به مشکلی برخوردم که همه چیز رو تحت تاثیر خودش قرار داده و اونم از این قراره که
وقتی در قسمت URL به جای آدرس سایت ، IP سایت رو می زنم دیگه خیلی از توابع مخصوصا توابع AJAX در JQuery کار نمی کنند ؟؟؟؟!!!!
توی فروم جستجو کردم اما چیزی چیدا نکردم و به خاطر همین پست جدید دادم
کسی راه حلی سراغ داره ؟
کسی قبلا به این مشکل خورده ؟
mehdi.mousavi
دوشنبه 17 آبان 1389, 10:20 صبح
با سلام وقتی در قسمت URL به جای آدرس سایت ، IP سایت رو می زنم دیگه خیلی از توابع مخصوصا توابع AJAX در JQuery کار نمی کنند
سلام.
از اونجاییکه XMLHttpRequest نمیتونه Cross-Domain عمل کنه، در نتیجه باید درخواستها به همون Domain ای ارسال بشه که صفحه در وهله اول از طریق اون Load شده.
بطور مثال اگر من به http://www.barnamenevis.org دسترسی پیدا میکنم، دیگه نمیتونم یه XMLHttpRequest به http://barnamenevis.org بفرستم، چون چنین درخواستی Cross-Domain تلقی میشه. دقت کنید که وقتی شما سایت رو دارید با IP آدرس می کنید و سپس درخواستهای Ajax رو به URL ای که با Domain Name تعیین شده ارسال می کنید، بازهم این اتفاق خواهد افتاد.
در نتیجه، هنگامیکه از Ajax استفاده می کنید، مطمئن بشید که درخواستها رو به URL هایی که بصورت Relative ذکر شده اند، ارسال کنید! بدین ترتیب، اگر کاربر با http://www.barnamenevis.org به صفحه شما دسترسی پیدا کنه و شما درخواست Ajax رو به /services/getusers.aspx ارسال کنید (بطور نمونه)، چون مسیر بصورت Relative تعیین شده، بازهم اگر با IP صفحه شما آدرس بشه، مشکلی پیش نخواهد اومد، چون اون مسیر Relative بر اساس URL ای که بصورت IP-Based ذکر شده تفسیر میشه. بنابراین، مسیرها رو در کدهای JavaScript خودتون بصورت Relative ذکر کنید تا مشکل رفع بشه.
در نهایت، اگر مجبور به دسترسی Cross-Domain هستید، می تونید از JSONP استفاده کنید که قبلا یکی دو بار در موردش در همین بخش توضیح داده ام.
موفق باشید.
cemohsen
دوشنبه 17 آبان 1389, 12:32 عصر
با تشکر از پاسخ شما
من منظوزتون رو خوب متوجه نشدم!
من دقیقا باید چی کار کنم ؟
من اینم بگم که وقتی از ابتدا هم با IP سایت رو باز می کنم هم به مشکل می خورم!
mehdi.mousavi
شنبه 22 آبان 1389, 10:34 صبح
با تشکر از پاسخ شما من منظوزتون رو خوب متوجه نشدم!
من دقیقا باید چی کار کنم ؟ من اینم بگم که وقتی از ابتدا هم با IP سایت رو باز می کنم هم به مشکل می خورم!
سلام.
لطفا اون بخش از کد JavaScript رو که کار نمیکنه اینجا قرار بدید تا ببینم حدسم درست بوده یا خیر و براتون توضیح بدم که چطور مشکل رو رفع کنید.
موفق باشید.
cemohsen
شنبه 22 آبان 1389, 15:17 عصر
با سلام
این کد مورد نطر من است
function bindUserPoints(arg) {
$.ajax({
type: "POST",
url: "<%=WebSite.Url.MainService %>GetAllUserPoints",
data: "",
error: function(error) {
alert(error.responseText);
},
success: function(content) {
var returnVal = (content.text == undefined) ? content.lastChild.textContent : content.text;
if (returnVal == "ERR") {
showMessage("خطا در بارگزاري اطلاعات", "Error", "4000", '<%=WebSite.Url.Image %>' + "Error.gif", false);
}
else {
$('.divItems').html(returnVal);
}
}
});
}
WebSite.Url.MainService آدرس صفحه سرویس است که در کد با استفاده از متدهای request.uri ادرس سایت را خوانده و بر می گرداند
مقدار بازگشتی سرویس هم کدهای htmlای است که باید در تگ div قرار بگیرد
که در زمانی که با IP وصل می شویم چیزی برنمی گرداند!!!!!
وب سرویس خود را هم در web.vonfig رجیستر کردیم.
mehdi.mousavi
شنبه 22 آبان 1389, 15:31 عصر
با سلام این کد مورد نطر من است آدرس صفحه سرویس است که در کد با استفاده از متدهای request.uri ادرس سایت را خوانده و بر می گرداند مقدار بازگشتی سرویس هم کدهای htmlای است که باید در تگ div قرار بگیرد که در زمانی که با IP وصل می شویم چیزی برنمی گرداند!!!!! وب سرویس خود را هم در web.vonfig رجیستر کردیم.
سلام.
مشکل کد شما دقیقا این خط هستش:
url: "<%=WebSite.Url.MainService %>GetAllUserPoints",
شما، سمت سرور، مسیری که بر میگردونید رو Relative تعیین کنید، مشکل حل میشه. در حال حاضر احتمالا MainService شما داره به string ای اشاره میکنه که به این صورت هستش:
http://mydomain.com/whatever
در صورتیکه، باید به این اشاره کنه:
/whatever
به بیان دیگه، مسیری که WebSite.Url.MainService داره از سمت Server برمیگردونه رو Relative تعیین کنید، نه Absolute تا مشکل رفع بشه.
موفق باشید.
cemohsen
شنبه 22 آبان 1389, 16:01 عصر
سلام.
به بیان دیگه، مسیری که WebSite.Url.MainService داره از سمت Server برمیگردونه رو Relative تعیین کنید، نه Absolute تا مشکل رفع بشه.
موفق باشید.
با تشکر
حق با شما بود ، من مشکلم رو به صورت زیر حل کردم
url: "http://" + location.host + "/webservices/mainservice.asmx/GetAllUserPoints",
mehdi.mousavi
شنبه 22 آبان 1389, 16:07 عصر
با تشکر حق با شما بود ، من مشکلم رو به صورت زیر حل کردم
url: "http://" + location.host + "/webservices/mainservice.asmx/GetAllUserPoints",
سلام.
واقعیتش متوجه نمیشم چه اصراری به دادن مسیر بصورت Absolute دارید. چرا جای کد فوق از این کد استفاده نمی کنید؟
url: "/webservices/mainservice.asmx/GetAllUserPoints",
موفق باشید.
پاورقی: در هر حال، خوشحالم که مشکل رفع شد.
cemohsen
یک شنبه 23 آبان 1389, 13:10 عصر
سلام.
واقعیتش متوجه نمیشم چه اصراری به دادن مسیر بصورت Absolute دارید. چرا جای کد فوق از این کد استفاده نمی کنید؟
url: "/webservices/mainservice.asmx/GetAllUserPoints",
موفق باشید.
پاورقی: در هر حال، خوشحالم که مشکل رفع شد.
به خاطر اینکه جایی که من دارم ازش متدهای سرویس رو صدا می زنم به صورت تودرتو در پوشه های دیگه ای قرار داره که من باید به عقب برگردم و مثلا اونها رو به اینصورت صدا بزنم که
url: "../../webservices/mainservice.asmx/GetAllUserPoints",
اما اینطوری با دستور location.host از مسیر root مستقیما به جایی که می خوام می رم
در هر صورت بسیار ممنون از پاسخگویی شما
cybercoder
یک شنبه 23 آبان 1389, 15:32 عصر
از اونجاییکه XMLHttpRequest نمیتونه Cross-Domain عمل کنه، در نتیجه باید درخواستها به همون Domain ای ارسال بشه که ...
با مرورگر کذائی مایکروسافت مشکلی نخواهد داشت زیرا به صورت Activex ... بنابراین به خود xmlhttp مربوط نمی شود بلکه یک سری policy وجود دارد که مرورگرهای استاندارد باید از آن تبعیت کنند.
http://en.wikipedia.org/wiki/Same_origin_policy
ه خاطر اینکه جایی که من دارم ازش متدهای سرویس رو صدا می زنم به صورت تودرتو در پوشه های دیگه ای قرار داره که من باید به عقب برگردم
یک مسیر را به عنوان پایه انتخاب و نسبت به آنجا سایر مسیرها را Initialize کنید.
موفق باشید.
cemohsen
دوشنبه 24 آبان 1389, 10:03 صبح
با مرورگر کذائی مایکروسافت مشکلی نخواهد داشت زیرا ....
با مرورگر مایکروسافت هم این مشکل وجود داشت!!!!!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.