ورود

View Full Version : سوال: مشکل در استفاده از متد ()get.$



k.alami
سه شنبه 12 آبان 1394, 23:51 عصر
من می خوام با استفاده از متد get یک مقدار از نوع string را از سرور بخونم ولی به جای برگردوندن string سورس html را بر می گردونه.
لطفا یکی از دوستان علت این مشکل را توضیح بده. چند روزی هست که درگیر این مشکل هستم:متفکر:



<%@ Page Language="C#‎‎‎‎‎‎‎‎‎‎" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="AjaxJQuery._default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
function btnclicked()
{
$.get("default.aspx/getStr", {name:'ali'}, function (data) { alert(data); });
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="btn1" type="button" value="GetValue" onclick="btnclicked()"/>
</div>
</form>
</body>
</html>

کد #C:


using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AjaxJQuery
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

[WebMethod]
public static string getStr(string name)
{
return "Hello" + name;
}
}
}


مفدار برگردونده شده در alert:
136469

mehdi.mousavi
چهارشنبه 13 آبان 1394, 08:30 صبح
سلام.
متودهایی رو که قصد دارید از سمت Client فراخوانی کنید رو با خصیصه ScriptMethod باید Decorate کنید:

[WebMethod]
[ScriptMethod]
public static string getStr(string name)
{
return "Hello" + name;
}

موفق باشید.

k.alami
چهارشنبه 13 آبان 1394, 09:04 صبح
خصیصه scriptmethod را هم اضافه کردم ولی بازم جواب نگرفتم. همون سورس صفحه html را بر می گردونه.

k.alami
چهارشنبه 13 آبان 1394, 20:13 عصر
از اساتید محترم کسی نیست بدونه مشکل کار از کجاست؟!

Rejnev
چهارشنبه 13 آبان 1394, 22:43 عصر
سلام.
توی کلاینت از این روش برای گرفتن دیتا از وب متد استفاده کنید(متد post و ارسال دیتا بصورت text و همچنین انتظار نوع دیتای برگشتی json (در سرور نیازی به تغییر کد نیست))



$(document).ready(function () {
$.ajax({
type: "Post",
url: "/default.aspx/getStr",
data: '{ name: "ali" }',
contentType: "application/json; charset=utf-8",
success: function (response) {
alert(response.d);
}
});
});



پیشنهاد:
استفاده از httpHandlers
مثال:
(در پروژه آیتمی از نوع Generic Handler اضافه کنید)



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


namespace WebApplication1
{
/// <summary>
/// Summary description for Ajax
/// </summary>
public class Ajax : IHttpHandler
{


public void ProcessRequest(HttpContext context)
{
//context.Response.ContentType = "text/plain";
//context.Response.Write("hello world");


switch (context.Request.QueryString["action"])//it's optional
{
case "action1":
context.Response.ContentType = "text/plain";
context.Response.Write("hello " + context.Request["name"]);
break;
case "action2":
context.Response.ContentType = "json";
context.Response.Write("{\"result\":\"you sent " + context.Request["name"] + "\"}");//use json serializers
break;
}
}


public bool IsReusable
{
get
{
return false;
}
}
}
}


و با کدهای js زیر با اون کار کنید



$(document).ready(function () {
$.ajax({
type: "Get",
url: "/ajax.ashx?action=action1",
data: { name: "ali" },
success: function (response) {
alert(response);
}
});


$.ajax({
type: "Post",
url: "/ajax.ashx?action=action2",
data: { name: "ali" },
dataType: "json",
success: function (response) {
//response is of json type
alert(response.result);
}
});


});

k.alami
پنج شنبه 14 آبان 1394, 11:18 صبح
ممنون از پاسختون آقای Rejnev
من هر دو روشی رو که گفتید استفاده کردم ولی بازم نتیجه نگرفتم. فقط سورس html رو بر می گردونه.
به نظرتون تنظیمات خاصی در فایل web.config برای این کار نیاز نیست؟

k.alami
پنج شنبه 14 آبان 1394, 18:40 عصر
یعنی تا حالا همچین مشکلی برای کسی پیش نیومده؟!
دوستان خواهشا کمک کنند. من پروژه پایان ترمم به خاطر همین مشکل کوچیک لنگ مونده. در ضمن من از ویندوز 8 و VS 2013 استفاده می کنم.

k.alami
شنبه 16 آبان 1394, 07:17 صبح
من همچنان منتظر کمک اساتید محترم هستم.:ناراحت:

Rejnev
شنبه 16 آبان 1394, 21:14 عصر
ممنون از پاسختون آقای Rejnev
من هر دو روشی رو که گفتید استفاده کردم ولی بازم نتیجه نگرفتم. فقط سورس html رو بر می گردونه.
به نظرتون تنظیمات خاصی در فایل web.config برای این کار نیاز نیست؟

نه تنظیم خاصی در web config نداره.
در روش دوم (استفاده از هندلر ها) قاعدتا نباید html برگردونه! چون http handler اصلا بدنه html نداره و فقط اون چیزی در خروجی به سمت کلاینت ارسال میشه که خودمون می فرستیم