View Full Version : حرفه ای: جواب برگشتی XMLHttpRequest همشه نال است ؟
popcorn
دوشنبه 09 مرداد 1391, 16:32 عصر
با سلام
یه سوال (http://barnamenevis.org/showthread.php?353652-%D8%A7%D8%AC%D8%B1%D8%A7-%D9%86%D8%B4%D8%AF%D9%86-%DA%A9%D8%AF-soap-%D8%AF%D8%B1-%D9%81%D8%A7%DB%8C%D8%B1%D9%81%D8%A7%DA%A9%D8%B3) رو مطرح کردم که تاکنون هیچکی جواب نداده. مشکلم رو جور دیگه ای می گم : من هر درخواستی رو که با شی XMLHttpRequest به هر آدرسی که می فرستم همیشه جواب برگشتی نال خواهد بود. البته این مشکل رو توی فایرفاکس دارم و در آی ای درست اجرا می شود.
لطف کنید راهنماییم کنید به همه روش ها رو امتحان کردم ولی جوابی نگرفتم.
var httprequest = new XMLHttpRequest();
function callback(){
if(httprequest.readyState==4){
alert(httprequest.responseText)
if httprequest.responseXML = null){
document.getElementById("box_wsdl").value = (new XMLSerializer()).serializeToString(httprequest.res ponseXML);
}
else{
document.getElementById("box_wsdl").value = httprequest.responseText;
} } }
httprequest.open("GET", "http://www.guru4.net/articoli/javascript-soap-client/demo/webservicedemo.asmx", true);
httprequest.setRequestHeader("Content-Type","text/xml");
httprequest.onreadystatechange = callback;
httprequest.send(null);
Variable
دوشنبه 09 مرداد 1391, 16:46 عصر
کد بالا یکی دوتا خطای سنتکسی داره .
var httprequest = new XMLHttpRequest();
function callback(){
if(httprequest.readyState==4){
alert(httprequest.responseText)
if(httprequest.responseXML == null){
document.getElementById("box_wsdl").value = (new XMLSerializer()).serializeToString(
httprequest.responseXML);
}
else{
document.getElementById("box_wsdl").value = httprequest.responseText;
}
}
}
httprequest.open("GET", "http://www.guru4.net/articoli/javascript-soap-client/demo/webservicedemo.asmx", true);
httprequest.setRequestHeader("Content-Type","text/xml");
httprequest.onreadystatechange = callback;
httprequest.send(null);
})();
ولی بعد از اجرا هم خطای زیر رو میگیرم که اینجا فکر کنم توضیح دادن (http://barnamenevis.org/showthread.php?353223-POST-%D9%88-GET-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D8%AF%D8%A7%D9%85%D9%86%D9%87-(%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%A7%D8%AC%D8%A7%DA%A9%D8%B3))
XMLHttpRequest cannot load http://www.guru4.net/articoli/javascript-soap-client/demo/webservicedemo.asmx. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
popcorn
دوشنبه 09 مرداد 1391, 17:32 عصر
این کد رو واسه نمونه گذاشتم که منظورم رو متوجه بشید. هر Urlی رو هم بزارید باز هم همین مشکله روی لوکال هم امتحان کردم اما جواب نگرفتم. این urlای هم گذاشتم توی این سایت (http://www.guru4.net/articoli/javascript-soap-client/demo/en.aspx) اجرا میشه و مشکلی نداره. مشکل من اینه که توی فایرفاکس اجرا نمیشه.
شما اگه لطفی کنید و کد نمونه کد زیر رو توی فایرفاکستون اجرا کنید ببیند مشکلی داره یا نه ؟
http://www.codeproject.com/KB/ajax/JavaScriptSOAPClient/JavaScriptSOAPClient_demo.zip
در ضمن اگه دانلودش کردید برید توی فایل demo.htm و توی خط 14 یوآر ال رو به http://www.guru4.net/articoli/javascript-soap-client/demo/webservicedemo.asmx (http://www.guru4.net/articoli/javascript-soap-client/demo/webservicedemo.asmx.) تغییر بدید.
من افزونه (https://addons.mozilla.org/en-us/firefox/addon/soa-client/)رو دانلود کردم که مشابه کد من هستش این افزونه بدون هیچ مشکلی اجرا میشه ولی نمی دونم کدهای من اجرا نمیشه ؟
با تشکر
eAmin
دوشنبه 09 مرداد 1391, 18:57 عصر
این کد رو واسه نمونه گذاشتم که منظورم رو متوجه بشید. هر Urlی رو هم بزارید باز هم همین مشکله روی لوکال هم امتحان کردم اما جواب نگرفتم. این urlای هم گذاشتم توی این سایت اجرا میشه و مشکلی نداره. مشکل من اینه که توی فایرفاکس اجرا نمیشه.
اون سایت به دلیل اینکه بر روی دامنه خودش درخواست رو میفرسته درست اجرا میشه، ولی چون شما دارید از یک دامنه دیگه مثل a.com درخواست میفرستید بهتون این اجازه داده نمیشه.
شما اگه لطفی کنید و کد نمونه کد زیر رو توی فایرفاکستون اجرا کنید ببیند مشکلی داره یا نه ؟
http://www.codeproject.com/KB/ajax/J...lient_demo.zip
در ضمن اگه دانلودش کردید برید توی فایل demo.htm و توی خط 14 یوآر ال رو به http://www.guru4.net/articoli/javascript-soap-client/demo/webservicedemo.asmx تغییر بدید.
من این کد رو در ie9 امتحان کردم و باز هم درست کار نکرد.
این اسکریپت به اینصورت کار میکنه که با استفاده از یک زبان سمت سرور در اینجا asp.net ، یک درخواست از طریق دامنه خودش مثلا a.com به guru4.net میفرسته و جوابی که دریافت میکنه رو به اسکریپت soap client پاس میده. اسکریپت ajax در واقع داره به a.com/webservicedemo.asmx درخواست رو میفرسته.
من افزونه رو دانلود کردم که مشابه کد من هستش این افزونه بدون هیچ مشکلی اجرا میشه ولی نمی دونم کدهای من اجرا نمیشه ؟
برای افزونه ها این permission داده میشه تا بتونند درخواست های cross domain رو ارسال کنند ولی برای وبسایتها محدودیتهایی دارید، که Variable هم برای شما جستجو کردند و لینک رو در آخر پستشون قرار دادند که به شما کمک میکنه بفهمید مشکلتون چیه.
popcorn
دوشنبه 09 مرداد 1391, 19:25 عصر
اون سایت به دلیل اینکه بر روی دامنه خودش درخواست رو میفرسته درست اجرا میشه، ولی چون شما دارید از یک دامنه دیگه مثل a.com درخواست میفرستید بهتون این اجازه داده نمیشه.
من دموی همین اسکریپت رو با روی آی ای اجرا کردم. درخواست رو به همون وب سرویس می فرسته و اجازه هم میده. ولی توی فایرفاکس و کروم جواب نمیده
ا
من این کد رو در ie9 امتحان کردم و باز هم درست کار نکرد.
این اسکریپت به اینصورت کار میکنه که با استفاده از یک زبان سمت سرور در اینجا asp.net ، یک درخواست از طریق دامنه خودش مثلا a.com به guru4.net میفرسته و جوابی که دریافت میکنه رو به اسکریپت soap client پاس میده. اسکریپت ajax در واقع داره به a.com/webservicedemo.asmx درخواست رو میفرسته.
اینا رو می دونم روی لوکال یه وب سرویس هم ایجاد کردم باز هم توی فایرفاکس کار نمی کنه.
ا
برای افزونه ها این permission داده میشه تا بتونند درخواست های cross domain رو ارسال کنند ولی برای وبسایتها محدودیتهایی دارید، که Variable هم برای شما جستجو کردند و لینک رو در آخر پستشون قرار دادند که به شما کمک میکنه بفهمید مشکلتون چیه.
آخه همین کدها توی آی ای اجرا مشین ولی توی فایرفاکس اجرا نمیشه ! خاصیت فایرفاکس اینجوریه؟
من می خوام یه افزونه واسه فایرفاکس بسازم که بتونه پیامک بفرسته و باید درخواستهام رو تبدیل به soap کنم و بفرستم اگه در قالب افزونه این کار رو بکنم آیا مشکل حل میشه ؟
Variable
دوشنبه 09 مرداد 1391, 22:05 عصر
من دموی همین اسکریپت رو با روی آی ای اجرا کردم. درخواست رو به همون وب سرویس می فرسته و اجازه هم میده. ولی توی فایرفاکس و کروم جواب نمیده
اینا رو می دونم روی لوکال یه وب سرویس هم ایجاد کردم باز هم توی فایرفاکس کار نمی کنه.
آخه همین کدها توی آی ای اجرا مشین ولی توی فایرفاکس اجرا نمیشه ! خاصیت فایرفاکس اینجوریه؟
من می خوام یه افزونه واسه فایرفاکس بسازم که بتونه پیامک بفرسته و باید درخواستهام رو تبدیل به soap کنم و بفرستم اگه در قالب افزونه این کار رو بکنم آیا مشکل حل میشه ؟
منم از سرشب دارم کلنجارمیرم برام یه سوال بود که چرا افزونه وصل میشه ولی مثلا این درخاست من وصل نمیشه که باجواب امین . برای پرمیژن افزونه سوالم بر طرف شد .
منم این کد رو تست کردم که باز گفت لوکال هاست شما اجازه نداره. و وصیعت statu==200 نمیشه
v='<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><HelloWorld xmlns="http://www.guru4.net/"></HelloWorld></soap:Body></soap:Envelope>';
// console.log(variable);
var httprequest = new XMLHttpRequest();
function callback(){
if(httprequest.readyState==4 )//&& httprequest.status==200){
{ console.log(httprequest);
}
}
httprequest.open("POST", "http://www.guru4.net/articoli/javascript-soap-client/demo/webservicedemo.asmx?wsdl", true);
httprequest.setRequestHeader("Content-Type","text/xml");
httprequest.onreadystatechange = callback;
httprequest.send(v);
سطح دسترسی رو سرور میده فکرنکنم فرقی داشته باشه که با افزونه وصل بشید یا ...
popcorn
دوشنبه 09 مرداد 1391, 23:18 عصر
منم از سرشب دارم کلنجارمیرم برام یه سوال بود که چرا افزونه وصل میشه ولی مثلا این درخاست من وصل نمیشه که باجواب امین . برای پرمیژن افزونه سوالم بر طرف شد .
منم این کد رو تست کردم که باز گفت لوکال هاست شما اجازه نداره. و وصیعت statu==200 نمیشه
v='<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><HelloWorld xmlns="http://www.guru4.net/"></HelloWorld></soap:Body></soap:Envelope>';
// console.log(variable);
var httprequest = new XMLHttpRequest();
function callback(){
if(httprequest.readyState==4 )//&& httprequest.status==200){
{ console.log(httprequest);
}
}
httprequest.open("POST", "http://www.guru4.net/articoli/javascript-soap-client/demo/webservicedemo.asmx?wsdl", true);
httprequest.setRequestHeader("Content-Type","text/xml");
httprequest.onreadystatechange = callback;
httprequest.send(v);
سطح دسترسی رو سرور میده فکرنکنم فرقی داشته باشه که با افزونه وصل بشید یا ...
خیلی ممنون که جواب دادید. راستش خودم هم داشتم دیونه می شدم. status همیشه صفر میشه، هزار نمونه کد رو اجرا کردم فکر کنم تنها دلیلی که داره فایرفاکس اجازه ارسال رو نمی ده و با افزونه این کار امکان پذیر هستش البته تا حالا با افزونه خودم امتحان نکردم.
البته بعضی سرورها اجازه این کار رو نمی دن ولی فایرفاکس و کروم هم اجازه این کار رو نمی دن.
یه بار هم که شده از IE خوشم اومد چون کدها رو اجرا می کرد. :لبخند:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.