PDA

View Full Version : سوال: Ajax - WebService



حسین حریری
سه شنبه 10 تیر 1393, 12:07 عصر
سلام
متاسفانه به ایرادی غیر منطقی برخوردم که کاملا منو گیج کرده.
یک وب سرویس ساده که تنها یک متد داره رو در یک پروژه دات نت ایجاد کردم. بعد کد زیر رو

<script>
$(document).ready(function () {
$("#btn_Do").on("click", function () {
DoAjax();
});
});


function DoAjax() {
$.ajax({
type: "POST",
url: "/WebService1.asmx/HelloWorld",
data: "{s:'aaaaa'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert(response.d);
}, failure: function (msg) { alert(msg); }
});
}
</script>


در یک صفحه ساده اچ تی ام ال گذاشتم و جی کوئری نسخه 2.1.1 رو هم بهش اضافه کردم.
این روال بخوبی در پروژه کار میکنه، اما یک اتفاق جالب میوفته!
یعنی وقتی صفحه اچ تی ام ال رو به همراه فایل جی کوئری از این پروژه به یک پروژه دیگه میبرم و سرویس رو با آدرس جدید
url: "http://localhost:1639/WebService1.asmx/HelloWorld",
صدا میزنم متاسفانه کار نمیکنه و خطا هم نمیده.

فایروال رو هم غیر فعال کردم، نشد.
امیدوارم کسی بتونه این مشکل غیر معقول رو حل کنه! :)
ضمنا یک چیزی پیچیده ترش میکنه، اونم این که با کپی کردن این کد ها در یک سیستم دیگر همه چیز درست کار میکند!!

HamidiFar
سه شنبه 10 تیر 1393, 12:24 عصر
دوست عزیز دو دلیل میتونه داشته باشه :
1- [ScriptService] حتما باید باشه
using System.ComponentModel;
using System.Linq;
using System.Web.Script.Services;
using System.Web.Services;
using Newtonsoft.Json.Linq;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]

public class TestWcf: WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

public string GetProduct(string strProductID)
{

}
}

2- به کراس دامین هم توجه کن به خاطر مسائل امنیتی نمی تونی به صورت پیشفرض از یک دامین دیگه وب سرویس بگیری که با استفاده از jsonp حل میشه

حسین حریری
سه شنبه 10 تیر 1393, 12:44 عصر
با تشکر
تگ جاوااسکریپت بالای وب سرویس هست
در مورد دوم نمیدونم باید چی بگم یا به چی فکر کنم، راستش همین کدها روی سیستم دیگران بخوبی کار میکنه! در مورد کراس دامین هم کمی جستجو کرده بودم قبلا، ولی واقعا سر در نمیارم که موضوع چیه!! حتی نمیدونم در چه موردی جستجو کنم؟ شبکه، برنامه نویسی، امنیت، ... :افسرده:

حسین حریری
سه شنبه 10 تیر 1393, 13:08 عصر
پروژه تست رو گذاشتم،
لطفا اگر تست کردید بگید که روی سیستم شما کار کرد یا خیر

HamidiFar
پنج شنبه 12 تیر 1393, 07:49 صبح
دوست عزیز این مسئله ارتباطی به سیستم نداره پروژه شما رو نگاه کردم اگر client.html که در پروژه WebApplicationServer اجرا کنید همه چی درسته ولی اونی که در WebApplicationClient کار نمی کنه چون همونطور که گفتم دامین اونها با هم فرق داره
Server :

http://localhost:1639/Client.html
Client :

http://localhost:1690/Client.html

برای اطلاعات بیشتر :

http://api.jquery.com/jquery.getjson/ و http://www.codeproject.com/Articles/667387/Jquery-Cross-Domain-ajax-call-using-JSONP و http://www.sitepoint.com/jsonp-examples/

حسین حریری
پنج شنبه 19 تیر 1393, 04:45 صبح
دوست عزیز این مسئله ارتباطی به سیستم نداره پروژه شما رو نگاه کردم اگر client.html که در پروژه WebApplicationServer اجرا کنید همه چی درسته ولی اونی که در WebApplicationClient کار نمی کنه چون همونطور که گفتم دامین اونها با هم فرق داره
Server :

http://localhost:1639/Client.html
Client :

http://localhost:1690/Client.html

برای اطلاعات بیشتر :

http://api.jquery.com/jquery.getjson/ و http://www.codeproject.com/Articles/667387/Jquery-Cross-Domain-ajax-call-using-JSONP و http://www.sitepoint.com/jsonp-examples/

فکر میکنم شما متوجه موضوع نشدی!
به هرحال ممنون