PDA

View Full Version : سوال: ارسال در ajax به روش POST



engmmrj
جمعه 18 اسفند 1391, 05:48 صبح
من یک کد رو نوشتم که به روش GET کار میکنه
میخواستم ببینم چطوری میتونم به روش POST هم این کارو بکنم

<script language="javascript">

function sendget(){

if(window.XMLHttpRequest){
var xmlhttp=new XMLHttpRequest();
}
else{
var xmlhttp=new ActiveXobject('microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
document.getElementById('div').innerHTML=xmlhttp.r esponseText;

}
}
xmlhttp.open('GET','sample01.php?user='+document.f orm.phone.value,true);
xmlhttp.send();
}
</script>

Omid_h70
جمعه 18 اسفند 1391, 07:49 صبح
سلام , تو همون تابع Open متد رو Post قرار بدین...
این کدی هست که من خودم قبلا داشتم...

xmlhttp.open("POST","check_field_database.php");

Variable
شنبه 19 اسفند 1391, 00:47 صبح
سلام , تو همون تابع Open متد رو Post قرار بدین...
این کدی هست که من خودم قبلا داشتم...

xmlhttp.open("POST","check_field_database.php");

بله درسته . وبعد درمتد سند. اطلاعاتی که میخای به صورت پست بفرستی رو قرار میدی.

engmmrj
شنبه 19 اسفند 1391, 05:53 صبح
xmlhttp.open("POST","check_field_database.php");
در این کد true احتیاج نیست؟اینو میدونستم.مشکلم این بود که چطوری باید مقادیر را اسال کرد در متد GET به این روش ارسال میشه

'sample01.php?user='+document.f orm.phone.value
در روش POST ه چه صورت است؟

Variable
شنبه 19 اسفند 1391, 16:12 عصر
key1=value1&key2=value2&key3=value3

engmmrj
جمعه 25 اسفند 1391, 11:52 صبح
روش درست پیدا کردم .

<script language="javascript">
function post(){
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXobject('microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
document.getElementById('div').innerHTML=xmlhttp.r esponseText;
}
}
param = 'text='+document.getElementById('text').value;
xmlhttp.open('POST','include.php',true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(param);

}
</script>
حالا میخواستم ببینم لینک هارو هم میشه بدون رفرش کرد؟

arashnaderi
جمعه 25 اسفند 1391, 19:30 عصر
روش درست پیدا کردم .
حالا میخواستم ببینم لینک هارو هم میشه بدون رفرش کرد؟

سلام. بله روشتون کاملا درسته. حالا یه روش بهتر و بهینه تر!!!


function loadXMLDoc(parameters, page_address, func)
{
if(window.XMLHttpRequest)
XMLHttpRequestObject = new XMLHttpRequest();
else
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");

XMLHttpRequestObject.open("POST", page_address, true);
XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
XMLHttpRequestObject.send(parameters);
XMLHttpRequestObject.onreadystatechange = func;
}

/*==================== Login ====================*/
function login_to_dbs(page_address, field1, field2)
{
var userField = document.getElementById(field1).value;
var passField = document.getElementById(field2).value;
var parameters= "user=" + userField + "&pass=" + passField + "&rand_num=" + Math.random();

loadXMLDoc(parameters, page_address, function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
var result= XMLHttpRequestObject.responseText;
}
});
}

/*==================== Save Message ====================*/
function save_message(msg_text, page_address)
{
var msg = document.getElementById(msg_text);
var parameters= "message=" + msg.value + "&rand_num=" + Math.random();

loadXMLDoc(parameters, page_address, function()
{
if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
alert('ok');
}
});
}
در این روش ما یک تابع کلی برای اینکار درست کردیم. که از این به بعد میتونیم هر تابعی رو بهش پاس بدیم و دیگه لازم نیست برای هر کاری، دستورات ایجاد شی و باز کردنو ارسال پارامترها را بنویسیم. پارامتر rand_num را هم برای این استفاده کردم که دستورات کش نشه و هر سری پارامترهای جدیدی( به واسطه ی وجود این پارامتر) به سمت سرور ارسال بشه.
در مورد لینک ها هم که فرمودین امکانش هست.بطور مثال:


<a href="" onClick="login_to_dbs('login.php', 'user_login', 'pass_login');return false;">اتصال به دیتابیس</a>

engmmrj
شنبه 26 اسفند 1391, 10:22 صبح
من محتویات صفحه اول رو بصورت ajax ارسال کردم به یک صفحه دیگر تو صفحه کد های java script داره که اجرا نمیشه چیکار کنم اجرا شه؟

<script language="javascript">
function post(){
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXobject('microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
document.getElementById('div').innerHTML=xmlhttp.r esponseText;
}
}
param = 'text='+document.getElementById('text').value;
xmlhttp.open('POST','include.php',true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(param);

}
</script>
<input type="text" id='text' onkeyup="post();" />

$DB=new PDO('mysql:host=localhost;dbname=ajax;','root','') ;
$post=trim($_POST['text']);
$query=$DB->query("select * from ajax where name like '%$post%'");
if($query->rowCount()==1){
print"<script>alert('sss');</script>";
}else{
print'این نام آزاد است';
print '<br>'.htmlspecialchars($post);
}
$DB=NULL;

arashnaderi
شنبه 26 اسفند 1391, 14:12 عصر
شما نباید به این صورت کار می کردید. توی صفحه ی پی اچ پی بهتر بود یک دستور echo ساده می نوشتی که برحسب اتفاق هایی که توی اون صفحه میوفته مقادیر بطور مثال 0، 1 و ... رو پاس می داد به سمت کاربر. بعد در سمت کاربر دستورات alert را نمایش می دادی. بطور مثال :


$DB=new PDO('mysql:host=localhost;dbname=ajax;','root','') ;
$post=trim($_POST['text']);
$query=$DB->query("select * from ajax where name like '%$post%'");
if($query->rowCount()==1){
echo "1";
}else{
echo "2";
}
$DB=NULL;.....
if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
sw=xmlhttp.responseText;
switch(sw){
case "1" :
....
break;
case "2" :
....
break;
}
}


البته این راه حله منه و ممکنه شما طوری دیگه ای هم به جواب برسید