parsgreen.com
article

نمایش و ذخیره اطلاعات فایل با آژاکس (Ajax)

ajax-copy-txt-file

آژاکس (Ajax) از آن جمله زبان های برنامه نویسی (و در واقع از جمله روش های مبتنی بر وب) است که با وجود شهرت فراوان، منابع آموزشی کامل و به اصطلاح روانی برای آن وجود ندارد و معمولا پراکنده نویسی ها و کتاب هایی قطور اما با بهره کم حاصل جستجو برای یافتن منبع آموزشی مناسب جهت یادگیری آن است، به هر صورت در مجموعه آموزش های مقدماتی آژاکس در «وبگو»، سعی کرده ایم که تا حد امکان مباحث را کاربردی شرح دهیم تا از طرح مسائل اضافه و حوصله سر بر اجتناب کرده باشیم، در ادامه همان مباحث آموزشی، این بار می خواهیم ببینیم که چگونه می توان یک فایل را توسط درخواستی مبتنی بر آژاکس به طور همزمان فراخوانی و در عین حال محتویات آن را به کمک برنامه نویسی PHP، در یک فایل دیگر کپی نمود.

فراخوانی فایل با آژاکس (Ajax)


همانطور که پیشتر در آموزش های مقدماتی برنامه نویسی آژاکس گفتیم، قبل از هر کاری، ابتدا باید شرایط ارسال کردن یک درخواست آژاکسی به سرور را فراهم کنیم، این کار با استفاده از شی XMLHttpRequest انجام می شود که یک درخواست در بستر آژاکس (ترکیبی از جاوا اسکریپت و زبان xml) به سرور ارسال می کند، معمولا از دو روش try و catch یا XMLHttpRequest مستقیم برای این منظور استفاده می کنند که در عمل هر دو شیوه کارکرد یکسان دارند (روش try و catch انعطاف پذیری بیشتری دارد)، در زیر ما درخواست آژاکسی خود را در یک تابع جاوا اسکریپتی آماده کرده ایم.
<script type="text/javascript">
function CreateRequest(){
    var request = false;
    try{
        request = new ActiveXObject('Msxml2.XMLHTTP');
    }
    catch(e){
        try{
            request = new ActiveXObject('Microsoft.XMLHTTP');
        }
        catch(e){
            try{
                request = new XMLHttpRequest();
            }
            catch(e){
                request = false;
            }
        }
    }
    return request;
}
</script>
به این صورت هر زمان که این تابع فراخوانی شود، یک شی XMLHttpRequest در پاسخ ساخته می شود (این شی در مرورگر اینترنت اکسپلورر به صورت ActiveXObject شناخته می شود)، این فایل را با نام ajax.js ذخیره کنید (دقت کنید که برای فایل های جاوا اسکریپت مستقل، تگ های script را حذف و صرفا محتوا را داخل فایل درج نمائید).

ارسال و دریافت اطلاعات با آژاکس (Ajax)


پس از اینکه شرایط درخواست آژاکسی را مهیا کردیم، به توابعی نیاز داریم که اطلاعات ارسالی و دریافتی را مدیریت کنند، برای این کار از کد زیر استفاده می کنیم که مبتنی بر آژاکس است.
<script type="text/javascript">
//نمایش اطلاعات در مرورگر
function Display(content, showresult){
    showresult.innerHTML = content;
}
//دریافت اطلاعات فایل متنی
function Retrieve(url){
    var AjaxCaching = false;
    var showresult = document.getElementById("showresult");
    var Request = CreateRequest();
   
    Request.onreadystatechange = function(){
        if(Request.readyState == 4){
            if(Request.status == 200){
                var content = Request.responseText;
                Display(content, showresult);
            }
        }
    };
     
    if(AjaxCaching == false){
        url = url + "?nocache=" + Math.random();
    }
   
    Request.open("GET", url, true);
    Request.send(null);
}
//شروع درخواست
function SubmitForm(){
    var Request = CreateRequest();
    var script = "ajax-copy-get.php";
    var filename = "ajax-copy-get.txt";
   
    Request.onreadystatechange = function(){
        if(Request.readyState == 4){
            Retrieve(filename);
        }
    };
   
    Request.open("POST", script, true);       
    Request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    Request.send(null);       
}
</script>
این فایل را نیز با نام ajax-copy-get.js ذخیره کنید.
همچنین فایلی با نام ajax-copy-get.txt باید در دایرکتوری (فولدر مورد نظر) موجود باشد و خالی نباشد (یعنی محتوایی داخل آن وجود داشته باشد)، تا اطلاعات از آن دریافت شود.
توضیح:
- در این کد سه تابع تعریف شده است، تابع Display، Retrieve و SubmitForm که هر کدام مربوط به بخش خاصی از فرآیند ارسال و دریافت اطلاعات با آژاکس هستند.
- تابع SubmitForm درون خود درخواست آژاکسی (CreateRequest) را فراخوانی می کند، در هنگامی که حالت آماده یا Request.readyState برابر 4 می شود، تابع Retrieve فراخوانی می شود که وظیفه ی تعریف شده آن، نمایش محتویات فایل با فرمت txt است (که نام و آدرس آن را در متغیر filename قرار داده ایم)، اما تا وقتی درخواست ارسال نشده است، readyState در عدد صفر است، لذا درخواست با متد POST ارسال می شود (که در مثال بالا، صرفا درخواستی برای اجرای فایل php مقصد، ارسال می شود).
- آنگاه در فایل php که در ادامه توضیح خواهیم داد، محتوای فایل اول را با تابع file_get_contents به دست می آوریم و یک کپی از آن با نامی دیگر در همان دایرکتوری می سازیم.
- قسمت مربوط به AjaxCaching در تابع قRetrieve، برای جلوگیری از ذخیره یا به اصطلاح کش شدن است، این قسمت با مقادیر متغیر AjaxCaching کنترل می شود (اگر false باشد، کش نمی شود، اما اگر true باشد، عمل کش صورت می گیرد).
- تابع Display تنها وظیفه دارد که با یک دستور innerHTML در جاوا اسکریپت، محتویات را به آی دی بلاک div مقصد بفرستد (در اینجا showresult).
- مقادیر متغیر content در واقع محتوایی است که از فایل txt خوانده می شود و در Request.responseText که قسمتی از فرآیند درخواست مبتنی بر آژاکس است (در آموزش های قبلی در این خصوص گفته ایم)، وجود دارد.
- حالت آماده یا readyState برابر 4، یعنی درخواست در آژاکس کامل شده است و status == 200 یعنی صفحه درخواستی، مشکلی ندارد (عدد 200 در یک ارتباط تحت وب به معنی بی نقص بودن آن است، به طور مثال عدد 404 به معنی پیدا نشدن صفحه مورد نظر، 500 به معنی خطای داخلی سرور و...)، این اعداد باید به طور استاندارد به صورت header از صفحه فراخوانی شده، دریافت شوند (در این مورد در آموزش های PHP یا مبانی عمومی وب، تحت عنوان سربرگ های HTTP مباحثی وجود دارد).

فایل php برای خواندن و کپی


تا اینجا ما درخواست آژاکسی و نحوه کنترل اطلاعات به کمک آن را تنظیم کرده ایم، اما آژاکس به تنهایی، بدون کمک یک زبان برنامه نویسی سمت سرور، کارایی زیادی ندارد، لذا باید دست به دامن PHP شویم!
کد زیر به عنوان فایل مقصد با تابع file_get_contents ابتدا محتویات فایل txt را می خواند و در خود نگهداری می کند، سپس در قسمت fopen، فایل جدیدی با متد w ایجاد کرده و محتویات تابع file_get_contents را که به متغیر content تعلق گرفته، درون آن کپی می کند.
<?php 
// فایل بر روی سرور دیگر یا همان سرور
$url = "ajax-copy-get.txt";      
// گرفتن محتویات فایل
$content = file_get_contents($url);
// کپی محتویات فایل داخل فایلی دیگر
$nfile = fopen("ajax-copy-get2.txt", "w");
if($nfile != false){
    fwrite($nfile, $content);
    fclose($nfile);
}    
?>
این فایل را با نام ajax-copy-get.php ایجاد کنید.
اکنون همه چیز آماده است که توابع را فراخوانی کنیم.

فراخوانی تابع آژاکسی


توابع در آژاکس در درواقع مبتنی بر جاوا اسکریپت هستند، چرا که آژاکس تنها ترکیبی نوین از دو زبان کهن جاوا اسکریپت و xml است، لذا فراخوانی آنها نیز می تواند با رویدادهای کنترلی صورت گیرد، به طور مثال رویداد onclick یا onload و...، در اینجا ما از یک دکمه در فرم HTML استفاده کرده ایم که مبتنی بر onclick است.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>وبگو | ارسال درخواست آژاکسی و کپی فایل</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
</style>
<script src="ajax.js" type="text/javascript"></script>
<script src="ajax-copy-get.js" type="text/javascript"></script>
</head>
<body>
<form action="" method="post" name="ajax">
<input type="button" id="submit" name="button" onclick="SubmitForm()" value="ارسال درخواست آژاکسی">
</form>
<div id="showresult">
نتیجه اینجا نشان داده می شود!
</div>
</body>
</html>
اکنون کافی است فایل ها را در لوکال هاست یا سرور ایجاد و این صفحه را (با نام دلخواه و فرمت html) فراخوانی کنید.
sectionدسته بندی: آموزش مقدماتی » Ajax
related مطالب بیشتر:
» فریم ورک های آژاکس (Ajax Frameworks)
» نمایش افکت fade in با آژاکس (ajax)
» نمایش پیام و تصویر در حال بارگذاری (loading) در آژاکس (ajax)
» آشنایی با برنامه نویسی آژاکس (ajax)، تئوری نوین وب
» ارسال و دریافت اطلاعات با متد get و post در آژاکس (ajax)
commentنظرات (۱۶ یادداشت برای این مطلب ارسال شده است)
نویسنده: Hesam
زمان: ۱۱:۵۰:۳۴ - تاریخ: ۱۳۹۱/۱۰/۲۱
با سلام
محتويات سايت من كه با زحمت يك گروه گردآوري ميشه توسط شخصي file_get_contents شده و همه ي مطالب رو در سايت ديگري بدون هيچ زحمتي كش رفته و نمايش ميده ... آيا راهي براي جلوگيري و بستن اون وجود داره؟
من ip و آدرس سايتش رو در هاست بلاك كردم ولي فكر مي كنم از هاست واسطه استفاده كرده و دور زده ...
يكي از دوستان ميگفت يك دستور در htaccess هست كه از اين كار جلوگيري مي كنه .
ممنون ميشم بنده را در اين رابطه راهنمايي بفرماييد .
با سپاس
موفق باشيد
پاسخ: 
سلام
واقعیت این است که محتوای منتشر شده در وب در کل قابل کپی است چون وقتی افراد عادی به محتوا دسترسی دارند، سارقین مطالب هم می توانند به آن دسترسی داشته باشند، آنچه که باید وجود داشته باشد اخلاق حرفه ای است که متاسفانه بعضا برخی از آن بی بهره اند.
اما در مورد مشکل سایت شما، چند راه حل نسبی وجود دارد، htaccess کاری متفاوت با آنچه کنترل پنل می کند، انجام نمی دهد، نهایتا بتوانید واسط کاربری (USER_AGENT) که به سرور شما درخواست ارسال می کند را شناسایی کرده و آن را هم بلاک کنید، برای این کار لازم است که در فایل htaccess مشابه دستورات زیر را قرار دهید:
RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3
RewriteRule ^.* - [F,L]
که به جای Bot باید قسمت اصلی از نام USER_AGENT فرد سارق را قرار دهید (این کار باید با دقت انجام شود، اگر واسط کاربری فرد سارق با دیگران مشترک باشد، تمام آنها خطای 403 و دسترسی غیر مجاز دریافت می کنند). نکته: این روش برای مورد شما کاربرد چندانی ندارد و شخص می تواند به راحتی نام واسط کاربری را تغییر دهد.
اما یک راه حل بهتر این است که در بین محتوای خود، به تناوب با لینک هایی به سایتتان ارجاع دهید، این کار باعث می شود که به مرور فرد دست از سایت شما بردارد.
یک راه حل دیگر برای بلاک کردن نمایش تصاویر هم می تواند استفاده از Hotlink Protection در کنترل پنل باشد.
نویسنده: Hesam
زمان: ۱۶:۰۷:۱۹ - تاریخ: ۱۳۹۱/۱۰/۲۱
سپاس از پاسخ حضرتعالي ، چون تعداد آيتم ها زياد هست نمي تونه بصورت دستي كپي كنه ... يك گروه 6,7 نفري براي بروز رساني از صبح ساعت 8 تا 5 بعدازظهر در حال فعاليت هستند .
كه ايشان زحمات همه را به راحتي بالا ميكشه !
آيا روشي وجود دارد كساني كه به سايت من File_Get_Contents يا CURL مي كنند را شناسايي و در ديتابيس ذخيره كنم ؟
بنده حدود 5 ماه پيش از شما در رابطه با بارگذاري محتوا بدون رفرش شدن صفحه كمك گرفتم و راهنمايي هاي شما مشكل منو رفع كرد .
در صورت امكان مي خواستم از طريق ايميل موضوع را با شما در ميان بگذارم .
پاينده باشيد
پاسخ: 
مهم نیست فرد از چه تابعی برای فراخوانی صفحات شما استفاده می کند (File_Get_Contents يا CURL تنها توابع و روش در برنامه نویسی php هستند) چون از نظر سرور سایت شما، یک درخواست عادی محسوب شده و اطلاعات لینک درخواست شده در پاسخ داده می شود، لذا بر روی اینکه فرد از چه تکنولوژی استفاده می کند نباید متمرکز شوید، آنچه که باعث شناسایی کاربران می شود یا واسط کاربری آنها است، مانند اطلاعات مرورگر یا هر سیستم دیگری که صفحات وب را فراخوانی کند مانند ربات های خزنده، به طور مثال واسط کاربری ربات گوگل با عبارت زیر مشخص می شود:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
حال اگر در کد htaccess به جای bot بنویسید Googlebot، تمام واسطه های کاربری که داخل آنها این عبارت باشد، خطای 403 دریافت می کنند، و یا ip آنها است که با آن به سرور شما درخواست ارسال می کنند، خارج از این نمی توان کار خاصی کرد.
شاید درج لینک در محتوا بهترین گزینه برای شما باشد، در محتوا لینک درج کنید تا کاربران سایت مذکور به منبع اصلی مطالب مراجعه کنند.
نویسنده: مازیار
زمان: ۱۱:۱۳:۱۲ - تاریخ: ۱۳۹۱/۱۰/۲۲
کسی که که از این توابع برای فراخوانی استفاده می کند با چند replace می تواند لینک را از متن حذف کند به نظرم بهترین حالت این است که تگ کلیدی که باعث دزدی می شود را متغیر کرد به طور مثال اگر کد فراخوانی با تگ table کار می کند کاری کرد که در هر بار باز شدن صفحه بین 1 تا 4 کد table به صورت رندم ایجاد شود تا کلید از بین برود و سورس html متغیر شود اگر سورس ثابت نداشته باشیم کدی هم برای دزدی نمی توان نوشت
پاسخ: 
ممنون از پیشنهاد بسیار خوب شما، البته این روش هم ممکن است صد در صد مانع دزدی نشود، چون تگ های html از مطالب به راحتی قابل تفکیک است، ولی بسته به مهارت فرد، تا حدود زیادی جوابگو است.
نویسنده: مازیار
زمان: ۱۲:۵۲:۱۲ - تاریخ: ۱۳۹۱/۱۰/۲۲
مورد دیگری که به ذهن بنده رسید این است که استنفاده از HTACCESS فایده ای ندارد به این دلیل که معمولا برای فرخوانی به طور روزانه از CRONJOB استفاده می شود اگر شما مشخصات را پیدا کنید و بلوک کنید به سادگی با استفاده از هاست های رایگان سیستم را تغییر می دهند و مجددا باید مشخصات جدید را جایگزین کرد که این مورد دردسر کامل به شمار می اید من در سایت بورس ایران دیدم که اسکریپت قیمت هایی که داده بودن خاصیت عجیبی داشت تمام ساختار فراخوانی می شد ولی اعداد فراخوانی نمی شد نمی دانم چگونه این کار را کرده بودند ولی سیستم جالبی بود اگر اطلاعی دارید لطفا بفرمایید بنده هم استفاده کنم
پاسخ: 
به طور کلی می توان این نوع کارها را با ترکیب جاوا اسکریپت و آژاکس انجام داد (به فرض اعداد را با آژاکس از سرور دریافت کرد و به جای خروجی مستقیم، از طریق innerHTML به خروجی ارسال کرد، در این صورت اعداد در سورس صفحه نشان داده نمی شوند ولی در مرورگر نمایش داده می شوند)، معمولا هم از فریم ورک جی کئوری بدین منظور استفاده می شود.
به این صورت بخش اصلی صفحه برای موتورهای جستجو (و سایر ربات ها) قابل ایندکس است ولی بخش جاوا اسکریپتی که شامل اعداد است، قابل ایندکس نیست.
نویسنده: مازیار
زمان: ۱۵:۰۸:۵۱ - تاریخ: ۱۳۹۱/۱۰/۲۲
نکته جالبی هست اگر امکان داره یک مثال و آموزش برای این مورد در سایت قرار دهید گمان کنم برای افرادی مثل من و اقای حسام بسیار مفید باشد
ممون میشم مثالی باشه که مثلا 10 عدد را وقتی وارد صفحه میشی در جاهای مختلف صفحه نمایش بده
پاسخ: 
در آموزش های کاربردی آژاکس مطالبی مرتبط به این موضوع وجود دارد، اگر کافی نبود اطلاع دهید تا یک مثال مشابه آنچه می خواهید نوشته شود.
نویسنده: مازیار
زمان: ۱۶:۲۱:۰۶ - تاریخ: ۱۳۹۱/۱۰/۲۳
من یک نمونه ساختم مشکل تا حدی حل شد ولی در سورس در بخش اسکریپت اعداد نمایش داده می شود لطفا به لینک زیر بروید و سورس را مشاهده کنید ببینید راه حلی برای این مشکل دارید ممنون
http://rayanide.com
پاسخ: 
راه حل آن استفاده از آژاکس است، آژاکس نتایج (اعداد) را از سرور (کدهای php) دریافت می کند و بدون اینکه در سورس صفحه html دیده شود، در بلاک آن را نمایش می دهد.
نویسنده: Hesam
زمان: ۱۰:۴۳:۳۶ - تاریخ: ۱۳۹۱/۱۰/۲۴
مخفي كردن سورس از نظر سئو براي سايت مشكلي ايجاد نمي كنه ؟
پاسخ: 
سورس کامل صفحه مخفی نمی شود، تنها اعداد مخفی می شوند، اعداد تاثیر زیادی در سئو سایت ندارد، به هر صورت این روش هم در کنار مزیت ها، معایب خودش را دارد.
نویسنده: Hesam
زمان: ۱۴:۰۷:۵۳ - تاریخ: ۱۳۹۱/۱۰/۲۸
تمام اقداماتي كه در اين صفحه راجع به آن صحبت شد انجام دادم ولي متاسفانه بازهم مطالب را كپي مي كردند!
دوستان گفتند به احتمال زياد ايشان كل مطالب را در اديتور وردپرس كپي مي كنند و بعد از ويرايش مطالب ، آن را ارسال مي كنند .
جالب اينجاست كه در آن سايت ، در پايين همه ي مطالب نوشته شده كپي برداري بدون ذكر منبع ممنوع است !!!
با يك نامه به مديريت آن سايت گويا امروز از كپي برداري دست كشيده اند !
.
.
از راهنمايي هاي دوستان عزيز سپاسگزارم
موفق باشيد
نویسنده: maryam
زمان: ۱۱:۵۲:۰۸ - تاریخ: ۱۳۹۲/۰۲/۲۸
با سلام
و باز هم ممنون از مطالب مفیدتون
کد شما رو اجرا کردم, جواب مورد نظر رو نگرفتم چک کردم دیدم, Request.status , صفر ست میشه!
و خط var content = Request.responseText
(در فایل ajax copy get.js) اجرا نمیشه!
لطفا راهنمایی کنید
پاسخ: 
سلام
ابتدا باید مطابق آموزش فایل ها را در کنار هم ایجاد کنید، یعنی این فایل ها:
ajax.js
ajax-copy-get.js
ajax-copy-get.txt
ajax-copy-get.php
index.html
سپس مطمئن شوید که فایل ajax-copy-get.txt خالی نباشد، یعنی محتوایی داخل آن باشد، چون تابع file_get_contents برای فایل های خالی FALSE برمی گرداند.
اگر تمام موراد را صحیح انجام دهید، کد تست شده و عمل می کند، برای خطایابی می توانید تابع به تابع رد اجرای کد را دنبال و با alert مقادیر را بررسی کنید تا اشکال کار مشخص شود.
نویسنده: maryam
زمان: ۱۲:۲۸:۰۱ - تاریخ: ۱۳۹۲/۰۲/۲۸
یه سوال دیگه هم داشتم
فایل تصویری رو هم میشه از این طریق نمایش داد؟
و اینکه ممنون میشم در مورد امکان ذخیره کردن این فایل هم راهنمایی کنید منظورم اینکه کاربر این امکان رو داشته باشه که مثلا بعد از اینکه button رو زد پنجره ای باز بشه که save یا open کردن فایل رو انتخاب کنه
پاسخ: 
برای نمایش تصویر کافی است در پاسخ، کد نمایش را به درخواست آژاکسی تحویل دهید، به فرض به جای متن، پاسخ به این صورت باشد:
<img src="image/example.jpg" alt="example" height="600" width="800">
اما برای اینکه تصویر به صورت قابل ذخیره برای کاربر باشد نمی توانید از آژاکس استفاده کنید، بلکه ابتدا باید یک فایل PHP با نام فرضی download-image.php داشته باشید که مشابه دستورات زیر در آن باشد:
<?php 
$file = 'example.jpg';
header('Content-Description: File Transfer');
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename= ".$file."");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile($file);
?>
و سپس در سمت کاربر و در کدهای جاوا اسکریپت از نمونه کد زیر استفاده کنید:
function DownloadImage(){ 
var file_url = "http://localhost/download-image.php";
document.location = file_url;
}
به این ترتیب با کلیک کاربر بر روی دکمه، تابع فرضی DownloadImage فراخوانی شده و این تابع فایل PHP را فراخوانی می کند و فایل، تصویر را به عنوان خروجی به صورت قابل دانلود به کاربر نشان می دهد.
نویسنده: maryam
زمان: ۲۲:۳۱:۵۳ - تاریخ: ۱۳۹۲/۰۲/۲۸
در مورد سوال اول من تابع ها رو چک کرده بودم و همانطور که خدمتتون عرض کردم Request.status صفر است.
Request.status نامساوی 200 است و خط
var content = Request.responseText
اجرا نمیشه!
ممنون که وقت میذارید
پاسخ: 
اینکه وضعیت برابر صفر است یعنی هیچ درخواستی ارسال نشده و در واقع شی Request به درستی اجرا نشده است، به هر صورت کد تست شده و مشکلی ندارد، باید ببینید کجای کار را اشتباه انجام می دهید.
نویسنده: كميل
زمان: ۰۰:۱۹:۵۳ - تاریخ: ۱۳۹۲/۰۷/۲۸
سلام و ممنون از زحمتي كه مي كشيد
يه سوالي در مود اين آموزشتون برام پيش اومده اونم اينه كه در صفحه ajax-copy-get.php شما چيزي را echo نكرده ايد... پس مقداري كه درون responsetext قرار مي گيرد از كجا مي آيد؟ در واقع صفحه php ما خروجي ندارد (اگر اشتباه نكنم)
اگر هم فرضا متغيرهاي ساخته شده در صفحه را به عنوان خروجي مي گيرد از كجا مي فهمد كه كدام متغير به عنوان خروجي در نظر بگيرد؟
ببخشيد اگه سوالم خيلي مبتديانه بود ... ممنون ميشم اگه كامل جواب بديد
پاسخ: 
سلام
ابتدا با یک درخواست فایل php با نام فرضی ajax-copy-get.php فراخوانی می شود که این فایل محتویات فایل ajax-copy-get.txt را دریافت و در ajax-copy-get2.txt کپی می کند، سپس تابع Retrieve فراخوانی شده و اطلاعات از ajax-copy-get.txt با متد GET دریافت می شود (جهت تست).
نکته: در آژاکس، دستور قسمت ارسال درخواست می تواند در انتهای سایر کدها قرار گیرد، به طور مثال Request.open که در انتهای تابع قرار گرفته است.
نویسنده: علی
زمان: ۱۷:۲۶:۳۰ - تاریخ: ۱۳۹۲/۱۱/۱۳
اقا سلام
ما می خواهیم مقادیر
var x = ?
را از طریق ajax
به یک فرم دیگر مثلا
123.php
ارسال کنیم
میشه راهنمایی بفرمایید چطوری این کار ممکنه و در ضمن این داده ها درون فرم نیستند

در ضمن از راهنمایی قبلی تون هم بسیار بسیار سپاسگذارم
پاسخ: 
سلام
لطفا به آموزش های مقدماتی Ajax مراجعه کنید، این موارد جزء نکات مقدماتی آژاکس است.
نویسنده: علی
زمان: ۱۶:۱۱:۲۶ - تاریخ: ۱۳۹۴/۰۲/۱۹
با سلام. یه نکته ای هست برای کسانی که با لوکال هاست کار می کنند. این که باید در صفحه ی پی اچ پی حتما از هدر زیر استفاده کنند و گرنه جواب نمی گیرند.
header("Access-Control-Allow-Origin:*");
با تشکر
پاسخ: 
سلام
البته این سربرگ HTTP معنی خاصی دارد و معمولا زمانی استفاده می شود که اطلاعات بین دو دامنه به اشتراک گذاشته شوند (به فرض لوکال هاست و یک سرور آنلاین)، لذا زمانی که تمام فرآیند در یک سایت یا لوکال هاست انجام شود نیاز خاصی به این سربرگ HTTP نخواهد بود، در غیر اینصورت باید مشکل از مورد دیگری باشد!
نویسنده: مهدی
زمان: ۲۳:۵۷:۵۳ - تاریخ: ۱۳۹۵/۰۸/۰۷
سلام
آیا نوشتن این خط کد
var content = Request.responseText;
Display(content, showresult);
ضروری است؟ می توان بجای استفاده از تابع دیسپلی فقط نوشت ؟
showresult.innerHTML=request.responseText
پاسخ: 
بله هیچ تفاوتی نمی کند! البته بهتر است کدهایتان را همیشه تا حد ممکن به صورت تابع بندی شده بنویسید (قسمت هایی که کارهای جداگانه یا تکراری انجام می دهند درون توابع جداگانه باشند) چون این کار علاوه بر اینکه درک و بازخوانی دستورات را ساده تر می کند، روند توسعه برنامه ها را در پروژهای بزرگ و حرفه ای سرعت می بخشد!
paged صفحه 1 از 2




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

3 × 2
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...