PDA

View Full Version : سوال: ارتباط بین وب سرویس ها و Jquery با فرمت داده ای Json



peymannaji
سه شنبه 10 شهریور 1388, 16:04 عصر
باسلام

من بجای ajax مربوط به خود دات نت از Jquery استفاده کردم . به این صورت که یک مقداری بصورت Json به وب سرویس پاس میشه و متد وب سرویس اجرا میشه

کد وب سرویس :




[WebMethod]
public void DelRecord(int id) {

SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial Catalog=Twitter;Integrated Security=True");
SqlCommand sqlcomm = new SqlCommand("sp_Content_DeleteRow", sqlconn);
sqlcomm.CommandType = CommandType.StoredProcedure;
sqlcomm.Parameters.AddWithValue("@ID",id);

try
{
sqlconn.Open();
sqlcomm.ExecuteNonQuery();
}
catch (Exception)
{
sqlconn.Close();
}

}
و کد مربوط به کدهای Jquery بصورت خلاصه البته :



$.ajax({
type: "Post",
url: "WebService.asmx/DelRecord",
data: "{'id': '" + info + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function() {

}
که در اینجا info شماره ID مربوط به رکوردی هست که به وب سرویس برای پاک کردن رکورد ارسال میشه ...

مشکل بنده اینه که وقتی متد وب سرویس بنده پارامتر ورودی نداره بدون هیچ مشکلی همه چیز با موفقیت انجام میشه . اما وقتی پارامتر ورودی داره وب سرویس عمل نمیکنه . تمام کدها درست هست اما یه جایی بین پارامتر ورودی متد وب سرویس و قسمت Data در کدهای Jquery داره مشکل ایجاد میکنه ...

با فایر باگ هم تست کردم اروری که میده اینه :



System.InvalidOperationException: Request format is invalid: application/json; charset=utf-8.
at System.Web.Services.Protocols.HttpServerProtocol.R eadParameters()
at System.Web.Services.Protocols.WebServiceHandler.Co reProcessRequest()


دوستان راهنمایی بفرمایند ...
با تشکر :قلب:

مهدی کرامتی
پنج شنبه 12 شهریور 1388, 23:04 عصر
تعریفات قبل از خط اعلام کلاس میبایست بدین شکل باشد:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class YourServiceClassName : System.Web.Services.WebService

در وب سرویس در خطی که متد مربوطه را تعریف میکنی بعد از [WebMethod] این خط رو اضافه کن:
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

اینها رو تست کن و نتیجه را اینجا بنویس.

peymannaji
جمعه 13 شهریور 1388, 02:11 صبح
با سلام به استاد عزیزم ...
هنگام استفاده با مورد زیر برخورد میکنم :



The type or namespace name 'ScriptMethod' could not be found (are you missing a using directive or an assembly reference?)


که البته من دنبال فضای نام مربوطه گشتم که ظاهرا مربوط هست به
System.Web.Script.Services

اما رفرنس مربوط به اون رو پیدا نکردم ...

مهدی کرامتی
جمعه 13 شهریور 1388, 02:33 صبح
Name Space فوق یخشی از System.Web.Extensions است. اگر پروژه شما به این Name Space رفرنس داشته باشد بدون مشکل می توانید در لیست Using ها System.Web.Script.Services را اضافه کنید.

peymannaji
جمعه 13 شهریور 1388, 12:57 عصر
ممنون . اما بازم با مشکل زیر روبرو شدم :(



System.InvalidOperationException: Request format is invalid: application/json; charset=utf-8.
at System.Web.Services.Protocols.HttpServerProtocol.R eadParameters()
at System.Web.Services.Protocols.WebServiceHandler.Co reProcessRequest()

peymannaji
جمعه 13 شهریور 1388, 16:50 عصر
با سلام مجدد
من وقتی به صورت معمولی بدون فرمت JSON اطلاعات را ارسال میکنم مشکلی ندارم ... یعنی بصورت زیر :




$.ajax({
type: "post",
url: "WebService.asmx/DelRecord",
data:'id=' +Del_ID,
success: function() {
$(this).parents(".record").animate({ backgroundColor: "#fbc7c7" }, "fast")
.animate({ opacity: "hide" }, "slow");
},
error: function() {
alert("error" + info);
}
});


اما برای من مهم هست که حتما بصورت JSON اطلاعات ارسال بشه ...

m.hamidreza
شنبه 14 شهریور 1388, 10:01 صبح
این دو تا مقاله رو ببین کمکی میکنه:
فراخوانی توابع وب سرویس با استفاده ASP‎.Net AJAX (http://www.persiadevelopers.com/articles/ajax-webservice.aspx)
فراخوانی وب سرویس با Jquery (http://www.persiadevelopers.com/articles/webservice-jquery.aspx)

موفق باشید.

peymannaji
شنبه 14 شهریور 1388, 13:29 عصر
حمید رضا جان ممنون ...
والا من هم همون کارهایی که گفته شد انجام دادم . حتی تو اون مقاله ها یکی 2 جا هم اشتباه لپی داشت . من تمام مقالات توی اینترنت رو فکر کنم در این مورد مطالعه کردم . اما اصلا نمیدونم مشکل کجا هست و چه گیری داره میده . در حالت دیتا تایپ معمولی مشکلی ندارم اما با JSON این مشکل رو دارم ...

peymannaji
شنبه 14 شهریور 1388, 18:29 عصر
بالاخره مشکل رو پیدا کردم !
مشکل این بود که من یک پروژه معمولی ایجاد کرده بود . در صورتی که باید یک پروژه AjaxEnableWebsite ایجاد میکردم . تا 1-2 روز دیگه در یک تاپیک مجزا کدها و توضیحات رو قرار میدم ...

تشکر از دوستانی که همراهی کردن :قلب: