PDA

View Full Version : سوال: ارسال مقدار از فرم بدون باز شدن صفحه ی مقصد



pat.mat71
سه شنبه 16 اسفند 1390, 03:03 صبح
من یک فرم Html دارم که با اون چندتا مقدار مثل نام - ایمیل و... رو به یک صفحه php ارسال میکنم
بعد از فشردن دکمه ی ارسال صفحه ی مقصد باز میشه و یک پیام باکس هم ظاهر میشه و میگه که ارسال موفق بوده یا خیر.
من به کد اون صفحه ی php دسترسی ندارم و فقط میتونم بهش مقادیر رو ارسال کنم .

میخواستم بدونم چطور میشه کاری کرد که بعد از فشردن سابمیت صفحه ی مقصد باز نشه و فقط پیام باکسی که میده رو صفحه ی فعلی من نمایش داده بشه . یا اصلا چطور میتونم بدون باز شدن صفحه مقصد بعد از ارسال ، نتیجه ی صفحه ی مقصد رو تو یک متغییر دریافت کنم .

امیدوارم منظورمو فهمیده باشید.

MMSHFE
سه شنبه 16 اسفند 1390, 07:07 صبح
باید از AJAX استفاده کنید.

ravand
سه شنبه 16 اسفند 1390, 08:32 صبح
شما هم مي توني از html استفاده كني و هم از ايجكس در جي كوئري:
يك مثال با html :

<form name='Form1' target="myFrame">
<input type="text">
</form>
<iframe name="myFrame" style="display: none;"></iframe>
در قسمت سمت سرور هم اونجايي كه پيغام صحيح هست يا صحيح نيست مي توني از كد زير استفاده كني:

echo ("<script type='text/javascript'>alert('صحيح است')</script>");

براي جي كوئري هم مي توني از اين كد استفاده كني:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
$("#asb").click(function(e){
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
$.get('http://localhost/shat/chap.php?x=' + x + '&y=' + y, function(data) {
alert("Data Loaded: " + data);
});

});
});
</script>
و مقادير ديگه كه براي ايجكس در جي كوئري استفاده ميشه ايناست:

$.load
$.post
$.get
$.getJSON
$.ajax

farhadfery
سه شنبه 16 اسفند 1390, 09:33 صبح
شما هم مي توني از html استفاده كني و هم از ايجكس در جي كوئري:
يك مثال با html :

<form name='Form1' target="myFrame">
<input type="text">
</form>
<iframe name="myFrame" style="display: none;"></iframe>
در قسمت سمت سرور هم اونجايي كه پيغام صحيح هست يا صحيح نيست مي توني از كد زير استفاده كني:

echo ("<script type='text/javascript'>alert('صحيح است')</script>");

براي جي كوئري هم مي توني از اين كد استفاده كني:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
$("#asb").click(function(e){
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
$.get('http://localhost/shat/chap.php?x=' + x + '&y=' + y, function(data) {
alert("Data Loaded: " + data);
});

});
});
</script>
و مقادير ديگه كه براي ايجكس در جي كوئري استفاده ميشه ايناست:

$.load
$.post
$.get
$.getJSON
$.ajax

:گیج:. مردم را گمراه نکنید!

pat.mat71
سه شنبه 16 اسفند 1390, 11:33 صبح
<iframe name="sent" height="1" width="1" scrolling="no" border="0" frameborder="0"></iframe>

جواب داد و پیغام بدون این که صفحه ی مقصد باز شه روی صفحه ی ارسال درخواست نمایش داده شد.

فقط 1 مورد دیگه مونده و اونم این که من نیاز دارم وقتی این پیغام میاد یه جوری بتونم چکش کنم که برای مثال اگر Succsess بود تو دیتا بیس دیتاهامو ثبت کنه و اگر faild بود فرمو ریست کنه.
چطوری مقدار مسیج رو بگیرم و چک کنم.؟


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

<script type="text/javascript">
jQuery(document).ready(function(){
$("#asb").click(function(e){
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
$.get('http://localhost/shat/chap.php?x=' + x + '&y=' + y, function(data) {
alert("Data Loaded: " + data);
});

});
});
</script>


$.load
$.post
$.get
$.getJSON
$.ajax

والا من اصلا جی کوئری تا حالا کار نکردم و اصلا نمیدونم از اینایی که گذاشتید کجا و چطوری میتونم استفاده کنم!


. مردم را گمراه نکنید!
چرا گمراه برادر !؟

MostafaEs3
سه شنبه 16 اسفند 1390, 12:43 عصر
آقا جی کوئری چیز سختی نیست ... یک کتابخانه هست که شما میتونید بوسیله اون هرکاری تقریبا انجام بدید !! جی کوئری خیلی قسمتها داره مثلا : jquery css - jquery ajax - jquery html خب شما مثلا میخواهید از قسمت AJAX استفاده کنید ابتدا به اینجا برید : http://www.w3schools.com/jquery/jquery_ajax.asp
این یکی از بهترین سایتهایی هست که اینکارو میشه توش انجام داد ... حالا در مورد چک کردن فرم شما میتونید به غیر از jquery از AJAX استفاده کنید و مثلا قبل یا بعد از اتصال به فایل php مقادیر رو چک کنید

pat.mat71
سه شنبه 16 اسفند 1390, 13:08 عصر
حالا در مورد چک کردن فرم شما میتونید به غیر از jquery از AJAX استفاده کنید و مثلا قبل یا بعد از اتصال به فایل php مقادیر رو چک کنید

میتونی یک مثال برام بزنی؟

MostafaEs3
سه شنبه 16 اسفند 1390, 13:16 عصر
اگه نفهمیدی بگو تا توضیح بدم :


<script type="text/javascript">
function AJAX(){
str = document.getElementById('example').value;
var xmlhttp;
if (str.length==0)
{
document.getElementById("AJAX_INNER").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{

if(xmlhttp.readyState < 4){
document.getElementById("AJAX_INNER").innerHTML="LOADING ...";

}
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
ajax_removeload();
// $('.loading').hide();
document.getElementById("AJAX_INNER").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","AJAX.php?form1="+str,true);
xmlhttp.send();
}
</script>
<div id="AJAX_INNER"></div>


<input type="text" id="example"></input>

<input type="button" onclick="AJAX()"></input>

MMSHFE
سه شنبه 16 اسفند 1390, 13:25 عصر
استفاده از iframe اصلاً توصیه نمیشه چون توی رتبه بندی سایت ازنظر موتورهای جستجو نمره منفی داره. ضمناً اینکه گفتن گمراه نکنید، بخاطر اینه که استفاده از iframe به معنای عدم بازشدن صفحه مقصد فرم نیست، بلکه شما دارین یک قاب ایجاد میکنید و با کمک target توی فرم میگین صفحه مقصد رو توی اون قاب باز کنه، نه اینکه اصلاً باز نشه. موفق باشید.

MostafaEs3
سه شنبه 16 اسفند 1390, 13:31 عصر
آها راستی با AJAX میتونی متد post هم ارسال کنی اگه نیاز داشتی بگو تا بهت یاد بدم

pat.mat71
سه شنبه 16 اسفند 1390, 13:45 عصر
<html>

<form name="form1" method="GET">
<input type="text" id="user"></input>
<input type="text" id="pass"></input>


<input type="button" onclick="AJAX()"></input>
</form>

<div id="AJAX_INNER"></div>

<script type="text/javascript">
function AJAX(){
str = document.getElementById('user').value;
str2 = document.getElementById('pass').value;
var xmlhttp;
if (str.length==0)
{
document.getElementById("AJAX_INNER").innerHTML=" type" ;
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{

if(xmlhttp.readyState < 4){
document.getElementById("AJAX_INNER").innerHTML="L OADING ...";

}
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
ajax_removeload();
// $('.loading').hide();
document.getElementById("AJAX_INNER").innerHTML=xm lhttp.responseText;
}
}
xmlhttp.open("GET","sms.php?user="+str+"&pass="+str2,true);
xmlhttp.send();
}
</script>

</html>


من اینو نوشتم اما بعد از پر کردن فیلدها و زدن دکمه هیچ اتفاقی نمیوفته!

pat.mat71
سه شنبه 16 اسفند 1390, 13:47 عصر
راستی روی لوکال هم دارم کار میکنم ، مشکلی که نداره؟

ravand
سه شنبه 16 اسفند 1390, 13:54 عصر
مهندس ايني كه ديديد من مثالي از ifram گذاشتم . براي اين نبود كه بگم اين ايجكس هست. من اولش هم براي اين دوستمون نوشتم دو تا مثال دارم يكي html و ديگري ايجكس در جي كوئري.:لبخند:

pat.mat71
سه شنبه 16 اسفند 1390, 14:11 عصر
رنک زیاد برام مهم نیست ، فقط میخوام بتونم این کارو انجام بدم.

MostafaEs3
سه شنبه 16 اسفند 1390, 14:16 عصر
فکر کنم بخاطر این فاصله ای هست که اینجا افتاده !! xmlhttp.open("GET","sms.php?user="+str+"&pass="+st r2,true);
البته شایدم نباشه .. آقا نیم ساعت صبر کن من درستش میکنم

pat.mat71
سه شنبه 16 اسفند 1390, 14:21 عصر
فکر کنم بخاطر این فاصله ای هست که اینجا افتاده !! xmlhttp.open("GET","sms.php?user="+str+"&pass="+st r2,true);
البته شایدم نباشه .. آقا نیم ساعت صبر کن من درستش میکنم

ممنون به خاطر لطفت.

از همه ی شما هم که زحمت میکشید و جواب میدید خیلی ممنونم.

MostafaEs3
سه شنبه 16 اسفند 1390, 14:27 عصر
اینو تست کن :


<html>

<form name="form1" method="GET">
<input type="text" id="user"></input>
<input type="text" id="pass"></input>


<input type="button" onclick="AJAX()"></input>
</form>

<div id="AJAX_INNER"></div>

<script type="text/javascript">
function AJAX(){
str = document.getElementById('user').value;
str2 = document.getElementById('pass').value;
var xmlhttp;
if (str.length==0)
{
document.getElementById("AJAX_INNER").innerHTML=" type" ;
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{

if(xmlhttp.readyState < 4){
document.getElementById("AJAX_INNER").innerHTML="LOADING ...";

}
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{

document.getElementById("AJAX_INNER").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","sms.php?user="+str+"&pass="+str2,true);
xmlhttp.send();
}
</script>

</html>

MostafaEs3
سه شنبه 16 اسفند 1390, 14:29 عصر
یکسری فاصله بین کدها افتاده فکر کنم بخاطر این ادیتور مزخرف سایت برنامه نویس هست !! اونا رو خودت درستش کن

pat.mat71
سه شنبه 16 اسفند 1390, 16:00 عصر
یکسری فاصله بین کدها افتاده فکر کنم بخاطر این ادیتور مزخرف سایت برنامه نویس هست !! اونا رو خودت درستش کن

جواب داد ممنون .

حالا xm lhttp.responseText رو چطوری توی یک متغییر php بریزم و ازش استفاده کنم؟

MostafaEs3
سه شنبه 16 اسفند 1390, 16:05 عصر
یعنی چی توی متغیر پی اچ پی بزنی ؟؟ شما باید همه ی عملیاتت رو توی همون فایلی که داری بهش اطلاعات میفرستی انجام بدی بعد مثلا یک چیزی بنویسی اینور alert یا هر چیز دیگه ای بذاری !! :لبخند: مثلا شما میخوای یک نفر ثبت نام کنه .. اینطرف فرم ها رو میفرستی بعد اونطرف اطلاعات رو ثبت میکنی ... بعد دوباره اینطرف یک alert یا متن میذاری بعد همون xmlhttp.responseText رو میذاری به عنوان متن alert .... بعد توی php یک چیزی echo میکنی که اینطرف به عنوان alert بنویسه ! :لبخند:

pat.mat71
سه شنبه 16 اسفند 1390, 16:36 عصر
یعنی چی توی متغیر پی اچ پی بزنی ؟؟ شما باید همه ی عملیاتت رو توی همون فایلی که داری بهش اطلاعات میفرستی انجام بدی بعد مثلا یک چیزی بنویسی اینور alert یا هر چیز دیگه ای بذاری !! مثلا شما میخوای یک نفر ثبت نام کنه .. اینطرف فرم ها رو میفرستی بعد اونطرف اطلاعات رو ثبت میکنی ... بعد دوباره اینطرف یک alert یا متن میذاری بعد همون xmlhttp.responseText رو میذاری به عنوان متن alert .... بعد توی php یک چیزی echo میکنی که اینطرف به عنوان alert بنویسه !

میدونم برادر . اما همونطور که گفتم من به صفحهی تارگت دسترسی ندارم . و فقط میتونم بهش مقدار ارسال کنم و یک دستور success یا faild بگیرم . حالا میخوام بعد از ارسال بیام پیامی که تارگت بهم میدرو چک کنم و بر اساس نوع پیام که حالا یا ساکسس هست یا فیلد یه کاری رو با php انجام بدم مثلا تو دستا بیس ثبت کنم ارسال این دفعه فیلد شد .

MostafaEs3
سه شنبه 16 اسفند 1390, 17:34 عصر
اطلاعات رو ارسال کن به اون تارگت اولی بعد مقداری که برگشته رو با جاوا اسکریپت چک کن و دوباره بفرست به یک فایل پی اچ پی و نتیجه نهایی رو نمایش بده

pat.mat71
سه شنبه 16 اسفند 1390, 23:02 عصر
این کد رو بردم و روی فرم اصلیم پیاده کردم . توی فرم اصلیم از Recaptcha استفاده شده . ایا این اسکریپت مقدار Recaptcha درون فرم رو هم ارسال میکنه؟ اگر نه چطور میشه درستش کرد؟

MostafaEs3
چهارشنبه 17 اسفند 1390, 03:06 صبح
مقدار ریکپچا درواقع بوسیله ی جاوا اسکریپت ارسال میشه ... باید از اسنیپت های آماده پی اچ پی برای کد امنیتی استفاده کنید ... توی گوگل بزن : php snippet capcha

pat.mat71
چهارشنبه 17 اسفند 1390, 12:07 عصر
حتما باید به تارگتم این ریکپچا ارسال بشه دست من نیست . کد ریکپچ هم اینطوریه

<script src="http://susawebtools.ir/services/minicounter/counter.php?url=http://www.tumrus.in&skin=8&def=453654"></script>

این رو کجای کدم بزارم که با زدن دکمه ارسال اینم اعمال خودشو انجام بده؟.