PDA

View Full Version : صدا زدن اسکریپت جاوا در فایلی جداگانه



tehro0n
یک شنبه 14 شهریور 1389, 03:03 صبح
من از این اسکریپت ها استفاده می کنم، ولی به دلیل اینکه بسیار طولانی شدند خواستم در فایل جاوا جداگانه قرار بدم و تنها آدرس آن فایل را صدا بزنم. اما نمی دونم چرا کار نمی کنه..!


<script type="text/javascript" src="Request.js"></script>

و محتوای این فایل


function showHome() {
document.getElementById('home').style.display='blo ck';
for (var i=2; i<=6; i++)
document.getElementById('ajaxResponse' + i).style.display='none';
}


function showrank(item) {
for (var i=1; i<=5; i++) {
if (i == item) {
document.getElementById('rank' + i).style.display='block';
} else {
document.getElementById('rank' + i).style.display='none';
}
}
}


function showreachs(item) {
for (var i=1; i<=5; i++) {
if (i == item) {
document.getElementById('reachs' + i).style.display='block';
} else {
document.getElementById('reachs' + i).style.display='none';
}
}
}


function showpageviews(item) {
for (var i=1; i<=5; i++) {
if (i == item) {
document.getElementById('pageviews' + i).style.display='block';
} else {
document.getElementById('pageviews' + i).style.display='none';
}
}
}


function AjaxRequest() {
try{ var xmlhttp = new XMLHttpRequest(); }
catch(err1)
{
var ieXmlHttpVersions = new Array();
ieXmlHttpVersions[ieXmlHttpVersions.length] = "MSXML2.XMLHttp.7.0";
ieXmlHttpVersions[ieXmlHttpVersions.length] = "MSXML2.XMLHttp.6.0";
ieXmlHttpVersions[ieXmlHttpVersions.length] = "MSXML2.XMLHttp.5.0";
ieXmlHttpVersions[ieXmlHttpVersions.length] = "MSXML2.XMLHttp.4.0";
ieXmlHttpVersions[ieXmlHttpVersions.length] = "MSXML2.XMLHttp.3.0";
ieXmlHttpVersions[ieXmlHttpVersions.length] = "MSXML2.XMLHttp";
ieXmlHttpVersions[ieXmlHttpVersions.length] = "Microsoft.XMLHttp";

var i;
for (i=0; i < ieXmlHttpVersions.length; i++) {
try
{
var xmlhttp = new ActiveXObject(ieXmlHttpVersions[i]);
break;
}
catch (err2) { return false; }
}
}
return xmlhttp;
}


function ajaxAction(item) {
for (var i=2; i<=6; i++) {
if (item == i) {
document.getElementById('loadBox').style.display=' ';
document.getElementById('home').style.display='non e';
document.getElementById('ajaxResponse' + i).style.display='';

var response = document.getElementById('ajaxResponse' + i);
var xmlHttp = AjaxRequest();
xmlHttp.open("GET" , "AjaxShow.php?id=<?php echo $s_id ?>&ajax=" + item, true);
xmlHttp.onreadystatechange=function() {
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
response.innerHTML = xmlHttp.responseText;
document.getElementById('loadBox').style.display=' none';
}
}
xmlHttp.send(null);

} else {
document.getElementById('ajaxResponse' + i).style.display='none';
}
}
}


googleMap = function load(id,e) {
if (document.all?true:false) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
} else { // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}

document.getElementById('ajaxR').innerHTML='<table border="1" width="600" cellspacing="0" cellpadding="0" height="360" bordercolor="#000000" style="border-collapse: collapse; border-width: 0px"><tr><td align=center valign=middle style="border-width:0px"><div align="background-color:white;width:120px"><img src="pic/loading.gif"></div></td></tr></table>';
document.getElementById('GMap').style.display='';
document.getElementById('GMap').style.top=tempY-ajaxR.offsetHeight-25;
document.getElementById('GMap').style.left=tempX-ajaxR.offsetWidth-15;
document.getElementById('close').innerHTML='<div dir="rtl" style="float:right; font-family:tahoma; font-size:8pt; padding-top:2px; padding-right:5px"><a href="C#‎lose" onclick="LoadCityClose()">[x بستن]</a>&nbsp;&nbsp;&nbsp;در حال جستجو ...</b></div>';

var xmlHttp = AjaxRequest();
xmlHttp.open("GET", "AjaxMap.php?id=" + id, true);
xmlHttp.onreadystatechange=function()
{ if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var response = xmlHttp.responseText.split("|");
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById('ajaxR'));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl(true));
map.addControl(new GOverviewMapControl(new GSize(169.2, 130.9)));
map.setCenter(new GLatLng(response[0],response[1]), 11);
map.setMapType(G_NORMAL_MAP);
map.openInfoWindow(map.getCenter(),"<br /><strong>موقعیت جغرافیایی "+response[4]+"</strong>");
}
document.getElementById('close').innerHTML='<div dir="rtl" style="float:right; font-family:tahoma; font-size:8pt; padding-top:2px; padding-right:5px"><a href="C#‎lose" onclick="LoadCityClose()">[x بستن]</a>&nbsp;&nbsp;&nbsp;کشور: '+response[2]+'&nbsp;&nbsp;&nbsp;شهر: '+response[3]+'</b></div>';
}
}

xmlHttp.send(null);
}


function LoadCityClose(){
document.getElementById('GMap').style.display='non e';
}


function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}

mohmadd
یک شنبه 14 شهریور 1389, 03:40 صبح
<script type="text/javascript" src="Request.js"></script>
مطمئنی ادرس src درسته ؟؟
به این حالت تست کن
http://www.x.x/Request.js

sama01
یک شنبه 14 شهریور 1389, 06:27 صبح
دوست عزیز؛
سوال شما چه ربطی به php داره؟

free bird
یک شنبه 14 شهریور 1389, 08:33 صبح
e خوب حالا
ربط داشت دیگه
ما تو php از جاوا اسکریپتم استفاده میکنیم
مطمئنی که فایلت رو جای درستی قرار دادی؟؟
اینجوری که شما آدرس دهی کردی باید jsت همونجا باشه
چرا فایل اسکریپتو تو یه پوشه مثلا به اسم js تو همون مسیر اصلی سایتت تو پوشه اصلی نمیذاری
بعد اینجوری آدرس بدی

<script type="text/javascript" src="js/request.js"></script>خیلی عجیب بود
شایدم از یه جاوای دیگم استفاده کردی که با این یکی تداخل داره و نمیذاره اجرا شه!!این قابل حل شدنه:چشمک:
اگه مشکلت قبلا حل شده بگو

صابر طهماسبی
یک شنبه 14 شهریور 1389, 11:19 صبح
کوچک و بزرگ بودن نام فایل جاوا اسکریپت را چک کنید بهتر است برای نامگذاری از حروف کوچک استفاده کنید و در آدرس دهی کوچک و بزرگی حروف را دقت کنید

tehro0n
یک شنبه 14 شهریور 1389, 13:32 عصر
نه همه اینها درسته و در همان پوشه فایل js وجود داره!
دقیقا همین اسکریپت رو داخل خود پوشه php (قابل توجه کسانی که می گن چرا سئوال رو اینجا می پرسی!) قرار میدم کدها درست کار می کنه!

چون تو لوکال هاست دارم تست می گیرم به نام js گیر داده بود که همه حروف کوچک باشه، الان کار می کنه ولی یک مسئله داره!
هیچی از آژاکسی که معرفی کردم بر نمی گردونه و argument میگه هم خونی نداره!
اما باز می گم وقتی میارم تو خود php درست میشه!


Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in E:\xampp\htdocs\Tools\AjaxShow.php on line 25یک سئوال: آیا باید js به صورت unicode باشه؟

sama01
یک شنبه 14 شهریور 1389, 20:39 عصر
این خطا که مربوط به mysql هست.
یعنی صفحه‌ی هدف شما داره خطا می‌ده.

مشکل در کد نویسی اون صفحه است. نه صدا زدن javascript

iner30
یک شنبه 14 شهریور 1389, 22:24 عصر
من با آجاکس مقدار یک فیلد رو منتقل میکنم به یک صفحه php
با کد

<script type="text/javascript" src="file.js"></script>
و توی این فایل مقدار یک فیلد برای یک صفحه php ارسال میشه.
که این صفحه php در محل همون فایل جاوا قرار داره.
وقتی این کد رو توی صفحه ای که همه فایل ها در همون دایرکتوری قرار دارن اجرا میکنم هیچ مشکلی ندارم ولی وقتی تو صفحه ای که توی اون دایرکتوری نیست و آدرس فایل جاوا رو میدم دیگه کد php اجرا نمیشه
چرا؟

sama01
یک شنبه 14 شهریور 1389, 22:31 عصر
آدرس‌ها به نسبت جایی که کد در آن اجرا می‌شه محاسبه می‌شن. نه جایی که فایلش هست.

iner30
یک شنبه 14 شهریور 1389, 22:46 عصر
متوجه منظورتون نشدم
یعنی وقتی من از کد زیر استفاده میکنم باید فایل php من هم تو همین آدرس باشه یا تو آدرسی باشه که من کد جاوا رو توی صفحه قرار دادم.


<script type="text/javascript" src="http://localhost/test/onetest.js"></script>

sama01
یک شنبه 14 شهریور 1389, 22:53 عصر
فرض کن شما در فایل domain.com/index.php هستی.
آن دو فیلی که گفتی در domain.com/dir هستند.
همچنین فرض کن که شما در فایل javascript فایل code.php رو صدا می‌زنی.
وقتی کد js در صفحه‌ی index.php اجرا می‌شه می‌خواد اطلاعات رو به صفحه‌ی code.php بفرسته. اگر آدرس شما نسبی باشه، می‌ره دنبال این آدرس domain.com/code.php که وجود نداره.

تونستم منظورم رو برسونم؟

iner30
یک شنبه 14 شهریور 1389, 23:07 عصر
اجرا شد ممنون، وقتی اجرا هم میشه یک ارور پایین صفحه میده :"error in page"

ولی یه مشکل دیگه هنوز دارم که تو این تایپیک پرسیدم:
http://barnamenevis.org/forum/showthread.php?t=244326

iner30
یک شنبه 14 شهریور 1389, 23:16 عصر
مشکل erro on page رو حل کردم ولی هنوز مشکل دوم پابرجاست

tehro0n
دوشنبه 15 شهریور 1389, 02:19 صبح
این خطا که مربوط به mysql هست.
یعنی صفحه‌ی هدف شما داره خطا می‌ده.

مشکل در کد نویسی اون صفحه است. نه صدا زدن javascript

1- زمانی که آژاکس داخل js قرار می گیره اینطور میشه!
2- زمانی که در همان فایل php هست درسته!
از 1 و 2 نتیجه می گیریم که ایراد کار یا در آژاکسه که همخونی با js نداره یا چیزی در js هست که کار رو خراب کرده.
پس مشکل از DB نیست چون اجرا میشه!