PDA

View Full Version : سوال: چجوری میشه یه کاری رو بدون اینکه صفحه رفرش بشه از صفحه ای بگیرم و در کادر مناسب بریزم ؟؟



bustanchi
پنج شنبه 30 آذر 1391, 11:33 صبح
سلام
دوستان من این نمونه کد رو دارم ولی نمیدوم چرا کار نمیکنه لطفا سریع کمکم کنید




<script type="text/javascript" language="javascript">
var pageurl="getpass.php?code=";
var http=getHttp();

function Answer()
{
if(http.readystate==4)
{
r=http.responseText;
document.getElementById("editPass").value=r;
}
}

function SendCodeAndResiveName()
{
var code = document.getElementById("nameOFuser").value;
http.open("GET",pageurl+code,true);
http.onreadystatechange=Answer;
http.send(null);
}


function getHttp()
{
var xmlhttp;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
if(typeof XMLHttpRequest !='undefined')
{
xmlhttp = new XmlHttpRequest();
}
}
}
return xmlhttp;
}
</script>

mfungroup
سه شنبه 05 دی 1391, 10:34 صبح
سلام دوست عزیزم مشکل تو اینه که آبجکت xmlhttprequest ای رو که درست کردی با اسم xmlhttp هست اما در جاهای دیگه با نام http فراخوانی کردی و مشکل بعدی اینه که ریکوست گت رو مثل پست ارسال کردی
به نظر من اگه از jquery استفاده کنی کارت راحت تر میشه ولی اگه هم میخوای از جاوا اسکریپت استفاده من پیشنهاد استفاده از کد زیر رو میکنم:
var div = "txt";
var loadingmessage = '<img src="images/loading.gif" alt="loading" height="16" width="16" /> لطفا کمی صبر کنید...';
function formget(form,url) {
var poststr = getFormValues(form);
postData(url,poststr);
}
function postData(url,parameters){
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState!=4){
document.getElementById(div).innerHTML=loadingmess age;
}
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById(div).innerHTML=xmlhttp.res ponseText;
document.getElementById("norobot").innerHTML='<img src="scripts/security.php" />';
document.getElementById("ok").click()
}
}
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length",parameters.length);
xmlhttp.setRequestHeader("Connection","close");
xmlhttp.send(parameters);
}
function getFormValues(formobj)
{
var str = "";
var valueArr = null;
var val = "";
var cmd = "";
for(var i = 0;i < formobj.elements.length;i++)
{
switch(formobj.elements[i].type)
{
case "text":
str += formobj.elements[i].name +
"=" + encodeURI(formobj.elements[i].value) + "&";
break;
case "password":
str += formobj.elements[i].name +
"=" + encodeURI(formobj.elements[i].value) + "&";
break;
case "hidden":
str += formobj.elements[i].name +
"=" + encodeURI(formobj.elements[i].value) + "&";
break;
case "textarea":
str += formobj.elements[i].name +
"=" + encodeURI(formobj.elements[i].value) + "&";
break;
case "select-one":
str += formobj.elements[i].name +
"=" + formobj.elements[i].options[formobj.elements[i].selectedIndex].value + "&";
break;
case "checkbox":
if(formobj.elements[i].checked == true){
str += formobj.elements[i].name +
"=" + formobj.elements[i].value + "&";
}
break;
}
}
str = str.substr(0,(str.length - 1));
return str;
}
فقط هرجا هر فرمی که داشتی در دکمه سابمیت کد زیر رو بنویس:

<input type="submit" onclick="formget(this.form,'getpass.php');return false" />
یادت باشه که return false از رفرش صفحت جلو گیری میکنه اما اگه میخوای کدت ساده تر باشه من کدتو به صورت زیر ویرایش کردم:
function Answer(){
var code=document.getElementById('code').value;
var div='txt';
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState!=4){
document.getElementById(div).innerHTML="<p align='center' ><img style='margin:auto' src='images/loading.gif' width='50' /></p>";
}
else if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById(div).innerHTML=xmlhttp.res ponseText;
}
}
xmlhttp.open("GET","getpass.php?code="+code,true);
xmlhttp.send();
}
توی این کد باید یه اینپوت بل آی دی code درست کنی و یه لایه با آی دی txt کنار دکمه سابمیت قرار بدی و در دکمه سابمیت تابع answer رو فراخوانی کنی و return false هم یادت نره
امیدوارم مشکلت حل شه
اگه بازم حل نشد بگو