PDA

View Full Version : سوال: یه سوال دارم در مورد AJAX



kiarash.kcm
چهارشنبه 14 تیر 1391, 12:06 عصر
سلام دوستان .. من یه کد js دارام که باهاش اطلاعات رو میفرستم به صفحه مربوطه و بر میگردونم به صفحه اصلی و نمایش میدم حالا سوالم اینجاست این کد تو مرورگر opera کار نمیکنه اصلا و تو mozila هم کار میکنه اما مثلا قسمت لطفا کمی صبر کنید رو نشون نمیده میشه یه کد جایگزین به من معرفی کنین یا همین رو برام ویرایش کنید که تو همه browser ها کار کنه ؟؟ ممنون میشم

var xmlHttp
function GetXmlHttpObject(handler){
var objXmlHttp=null
if (navigator.userAgent.indexOf("Opera")>=0){
alert("این اسکریپت در مرورگر اوپرا شما اجرا نمی شود")
return
}
if (navigator.userAgent.indexOf("MSIE")>=0){
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0){
strName="Microsoft.XMLHTTP"
}
try{
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler
return objXmlHttp
}
catch(e){
alert("اکتیواکس مرتبط با اسکریپتهای مرورگر شما مشکل دارد")
return
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0){
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler
return objXmlHttp
}
}
///////////////////////////////////////////////// User Functions /////////////////////////////////////////////////////
function page3(inp,inp2){
var url="shop.php?subject=" + inp + "&brand=" + inp2;//alert(url);
xmlHttp=GetXmlHttpObject(stateChanged3)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
}
function stateChanged3(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("loadshow").innerHTML=xmlHttp.responseText;
javascript:window.scrollTo(0,0);
}else{
document.getElementById('loadshow').innerHTML='ل فا کمی صبر کنید';

}
}
///////////////////////////////////////////////// User Functions /////////////////////////////////////////////////////



و اینکه بهم بگین اصلا من درست دارم کار میکنم با AJAX یا نه ممنون .

kiarash.kcm
شنبه 31 تیر 1391, 20:25 عصر
یعنی کسی جواب نمیده ؟؟
خیلی برام واجب .. ببینید فقط قسمت لطفا کمی صبر کنید تو mozila va chorm کار نمیکنه اما تو ie کار میکنه ... لطفا کمک کنید

Variable
شنبه 31 تیر 1391, 21:50 عصر
چرا از جی کوئری استفاده نمیکنی

Variable
شنبه 31 تیر 1391, 22:13 عصر
ببین الان اکثر مرورگرها به یک شکل استاندار از شی جاوااسکریپتی که ایجکس رو فراهم میکنه . استفاده میکنه یعنی XMLHttpRequest
فکر کنم این جوری براتون کافی باشه



function createXHR(){
if(window.XMLHttpRequest)
return new XMLHttpRequest();
else
return new ActiveXObject('Microsoft.XMLHTTP');
}
function page3(inp,inp2){
var url="shop.php?subject=" + inp + "&brand=" + inp2;//a
xmlHttp=createXHR();
xmlHttp.onreadystatechange=stateChanged3;
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
}

kiarash.kcm
یک شنبه 01 مرداد 1391, 00:28 صبح
ممنون از راهنمایی تون فقط یک سوال میمونه این تابع اول من بود که درست کردین تابع دوم که محتویات رو بر میگردونه رو نباید تغییر بدم ؟؟ یعنی مشکل فقط از تابع اول بود؟؟ از اونجایی که تو تابع دوم این قسمت

document.getElementById('loadshow').innerHTML='ل �فا کمی صبر کنید';
کار نمیکنه ... ممنون و اینکه یه سوال دیگه من میخوام خیلی جامع بدون یک فرم رو که فرض کنید 2 تا فیلد user و pass داره رو میخوام به صورت ajax منتقل کنم به صفحه مربوطه این کار چجوری امکان داره ؟ واقعا ممنون از راهنمایی و همین که جواب سوال قبلی رو دادین ... باز هم ممنونم

Variable
یک شنبه 01 مرداد 1391, 10:28 صبح
این فقط یه مثاله سادست


<?php
// login.php
if(isset($_GET['uname']) && !empty($_GET['uname']))
{
$user=$_GET['uname'];
if($user=='variable'){
if(isset($_GET['pass']) && !empty($_GET['pass']))
{
$pass=$_GET['pass'];
if($pass=='123')
{
$str=" passWord is correct 123 welcome dear ".$user;;
//$str+=
}else{
$str ="wrong password";
}
}else{
$str='password is empty';
}
}else{
$str='user name error ';
}
}else{
$str='User is empty';
}

echo $str;

?>




<html>
<head>
<title></title>
</head>
<body>
user=variable<input type="text" id="uname">
<br />
pass=123 <input type="text" id="pass">
<button id="btn"> Send </button>
<div id="message"> </div>

<script type="text/javascript">
(function(){

function get(id){
return document.getElementById(id);
}

function sendForm(){
var uname=get('uname').value;
var pass=get('pass').value;

var url='login.php?',
data='uname='+uname+"&pass="+pass;

var xhr=new XMLHttpRequest();
xhr.open('GET',url+data,true);
xhr.onreadystatechange=finalFunction;
xhr.send(null);

function finalFunction(){
msg=get('message');
if(xhr.status==200&& xhr.readyState==4)
{
msg.innerText=xhr.responseText;
}else{
msg.innerText="please waite ...."
}
}

}
var btn=get('btn');
btn.addEventListener('click',sendForm,false);

})();
</script>
</body>
</html>

kiarash.kcm
یک شنبه 01 مرداد 1391, 14:37 عصر
ممنون داداش ... فقط یه جای کار گیر دارم اونم اینه که این کد توی IE و MOZILA کار نکرد .. من درست عمل کردم ولی فقط تو
Chrome کار کرد !!! اگه میشه اینم یه راهنمایی کنی ممنونت میشم ... فهمیدم باید باهاش چجوری کار کنم و اینکه مشکلمم خیلی خوب حل میکنه اما به شرطی که رو همه browser ها جواب بده ...
این فایل من که رو chrome کار کرد
90081
ممنون بازم از حسن توجه شما.

Variable
یک شنبه 01 مرداد 1391, 15:44 عصر
معذرت میخام . بله حق باشماست. در فایر فاکس عملیات ای جکس کار میکرد . فقط innerText نمیدونم چرا تو فایر فاکس جواب نداد. عجیبه برام .
در اینترنت اکسپلورر هم مربوط به الصاق کردن . تابع کنترل کننده رویداد بود . که تصحیح شد .
ای ای من 8 و فایرفاکسم 13 هست . بازم معذرت


<html>
<head>
<title></title>
</head>
<body>
user=variable<input type="text" id="uname">
<br />
pass=123 <input type="text" id="pass">
<button id="btn"> Send </button>
<div id="message"> </div>

<script type="text/javascript">
(function(){

function get(id){
return document.getElementById(id);
}

function sendForm(){
var uname=get('uname').value;
var pass=get('pass').value;
var msg=get('message');

var url='login.php?',
data='uname='+uname+"&pass="+pass;

var xhr=new XMLHttpRequest();
xhr.open('GET',url+data,true);
xhr.onreadystatechange=finalFunction;
xhr.send(null);

function finalFunction(){
if(xhr.status==200&& xhr.readyState==4)
{
msg.innerHTML=xhr.responseText;
}else{
msg.innerHTML="please waite ...."
}
}
}
var btn=get('btn');
if(btn.addEventListener)
btn.addEventListener('click',sendForm,false)
else
btn.attachEvent('onclick',sendForm,false);
})();

</script>
</body>
</html>

kiarash.kcm
یک شنبه 01 مرداد 1391, 18:18 عصر
واقعا ممنونم خیلی کارم و راه انداختی ...

راستی یه چیزی ... من یه مشکل جالبی بر خوردم نمیدونم چجوری حلش کنم ؟ اون کد اولی که رو همین پست گذاشتم رو ببین ... یه جا این رو اضافه کرده بودم

window.scrollTo(0,0)
که کاربر از هر جا که لینک رو زد صفحه بره بالا .. حالا یه مشکل دارم ... این دستور رو هم که بر میدارم حتی با تغییراتی که خودت به کد دادی بازم میگذارم هر جای سایت که لینک ajax داشته باشم باز میره بالای سایت
مثلا سایت من آدرسش اینه :
www.kcmos.com تو همون صفحه اول ادامه مطلب ها رو بزن ببین میپره بالای صفحه نمیدونم مشکلش چی میتونه باشه.

Variable
یک شنبه 01 مرداد 1391, 23:33 عصر
خیلی باهاش کنجار رفتم . نشد .
ببینید اول اون 2 تا تابع اسکرول رو پاک کنید بعد . یه تست بکن ببین اگه بجای

<a href="#" onclick="page('hesab')">حساب بانکی</a>

این جوری بنویسی:

<div onclick="page('hesab')">hesabe banki</div>
یا اینکه اینو بنویسی امتحان کن

<div id="#hesab">hesabe banki</div>
....
<script type="text/javascript">
$("#hesab").click(function(){
page('hesab');
});
</script>

eAmin
دوشنبه 02 مرداد 1391, 01:02 صبح
اگر این خط رو از تابع StateChnaged3 حذف کنید:

javascript:window.scrollTo(0,0);
و لینکها رو به اینصورت اصلاح کنید مشکلتون حل میشه:

<a href="javascript:page('helpshop')">راهنمای خرید نوت بوک</a>

درضمن در فایل JavaSaAjax1.js دوباره تابع createXHR رو پیاده سازی کردید در صورتی که کافی بود تا یکبار نوشته بشه. کلا کدهای این فایل از نظر DRY یعنی خودکشی! کل کدهای این فایل رو میشه در دو تابع پیاده سازی کرد و در طول پروژه فقط از همین دو تابع استفاده کرد.

kiarash.kcm
دوشنبه 02 مرداد 1391, 02:40 صبح
ممنون از هر دو عزیز ... مشکلم حل شد با برداشتن # و اضافه کردن javascript به سر خط لینک ... و اینکه ممنون از بابت راهنمایی تون در مورد فراخوانی تابع به دفعات این رو نمیدونستم من ... کلا جاوا زیاد کار نکردم و آشنایی چندانی هم ندارم ... یه سوال برام هست اونم اینه که چجوری میشه کاری کرد که فایل های js قابل دانلود نباشه...چون ممکن من اطلاعاتی رو بخوام از صفحه ای خاص بخونم اما نخوام کسی اون صفحه رو بفهمه که چی هست ... اصلا امکانش وجود داره که جلوی دانلود فایل های js رو گرفت ...
بازم ممنون از وقتی که گذاشتین برام و مشکلم رو واقعا حل کردین و اینکه به معلوماتم کنار شما اساتید اضافه تر شد.

Variable
دوشنبه 02 مرداد 1391, 08:27 صبح
این جاوا نیست
جاوا اسکریپت است
حتی برا ی شما دوست عزیز
:))