PDA

View Full Version : مشکل در استفاده از وب متد و جی کوئری



negar442
یک شنبه 30 فروردین 1394, 00:04 صبح
من می خوام زمانی که روی دکمه کلیک شد یک پیغام نمایش بده با ای جکس و بدون آپدیت پنل کدهای زیر رو هم نوشتم :


<%@ Page Language="C#‎‎‎‎" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">
<title></title>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js' type="text/javascript"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/json2/20130526/json2.min.js"></script>
<script type="text/javascript">
function test1() {
$.ajax({
type: "POST",
url: "default5.aspx/test",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
}, error: function () {
alert("error");
}
});
}
</script></head><body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="button" onclick="test1()" />
</div> </form></body></html>







using System;
using System.Collections.Generic;
using System.Web.Services;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Web.Services.Protocols;




using System.Collections.Generic;






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


}
[System.Web.Services.WebMethod]
public static string test()
{
return "hello bodys";
}
}


ولی همیشه قسمت error مربوط به ajax اجرا میشه ! به نظر شما اشکال کار من چیه؟ (البته روشهای راحتتری برای پیغام نشان دادن وجود داره ولی من می خوام فقط از این روش به نتیجه برسم)

alireza_s_84
یک شنبه 30 فروردین 1394, 00:27 صبح
من می خوام زمانی که روی دکمه کلیک شد یک پیغام نمایش بده با ای جکس و بدون آپدیت پنل کدهای زیر رو هم نوشتم :


<%@ Page Language="C#‎‎‎‎‎" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">
<title></title>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js' type="text/javascript"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/json2/20130526/json2.min.js"></script>
<script type="text/javascript">
function test1() {
$.ajax({
type: "POST",
url: "default5.aspx/test",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
}, error: function () {
alert("error");
}
});
}
</script></head><body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="button" onclick="test1()" />
</div> </form></body></html>







using System;
using System.Collections.Generic;
using System.Web.Services;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Web.Services.Protocols;




using System.Collections.Generic;






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


}
[System.Web.Services.WebMethod]
public static string test()
{
return "hello bodys";
}
}


ولی همیشه قسمت error مربوط به ajax اجرا میشه ! به نظر شما اشکال کار من چیه؟ (البته روشهای راحتتری برای پیغام نشان دادن وجود داره ولی من می خوام فقط از این روش به نتیجه برسم)

پیغام خطا رو قرار بدین مشخصه به چه دلیلی خطا رخ میده.

negar442
یک شنبه 30 فروردین 1394, 08:09 صبح
پیغام خطا رو قرار بدین مشخصه به چه دلیلی خطا رخ میده.

اصلا پیغام خطا نمی ده فقط اون قسمت کدهای ajax که در زیر می بینید اجرا میشه و اگه این قسمت رو حذف کنم پس از کلیک روی دکمه هیچ عکس العملی نشون داده نمی شه!



error: function () {
alert("error");
}

alireza_s_84
یک شنبه 30 فروردین 1394, 09:25 صبح
اصلا پیغام خطا نمی ده فقط اون قسمت کدهای ajax که در زیر می بینید اجرا میشه و اگه این قسمت رو حذف کنم پس از کلیک روی دکمه هیچ عکس العملی نشون داده نمی شه!



error: function () {
alert("error");
}

من دقیقا کدهای شما رو اجرا کردم و پیام خطایی دریافت نکردم.
شما قبل از کلیک روی باتن توی یکی از مرورگرهای کروم یا فایرفاکس کلید F12 رو فشار بدین تا کنسول اجرا بشه بعد روی باتن کلیک کنید ، میتونید هدرهای درخواستو هدرهای پاسخ رو کامل ببینید در اونجا جزئیاتی از خطا شرح داده شده که کمک زیادی میکنه تا متوجه بشیم ایراد کار کجاست.

negar442
یک شنبه 30 فروردین 1394, 18:12 عصر
این راه رو هم رفتم ولی هنوز همون خط آلرت اجرا میشه. کدهای من هیچ خطایی نداره ولی یک اشکال منطقی توش هست که خروجی که من می خوام رو نشون نمی ده ! پروژه ام رو می زارم خودتون اجرا کنید :

130447

kamranetemadi
یک شنبه 30 فروردین 1394, 20:28 عصر
دوست عزیز خروجی وب متود شما باید به فرمت json باشه

alireza_s_84
یک شنبه 30 فروردین 1394, 20:52 عصر
این راه رو هم رفتم ولی هنوز همون خط آلرت اجرا میشه. کدهای من هیچ خطایی نداره ولی یک اشکال منطقی توش هست که خروجی که من می خوام رو نشون نمی ده ! پروژه ام رو می زارم خودتون اجرا کنید :

130447

دوتا ایراد تو پروژه شما بود:
یکی کلاس های شما توی فضای نام قرار نداشتن. یعنی namespace نداشتن و از اونجا که وب متد شما بصورت static تعریف شده لازمه که توی فضای نام باشه.
دوم شما برای پروژه Virtual Path تعریف کرده بودین و پروژه توی مسیر http://localhost:1266/WebSite4/Default5.aspx اجرا میشد و از اونجا که شما توی جی کوئری مسیر Default5.aspx/test رو فراخونی میکنید طبیعیه که وب متد اجرا نشه.

negar442
یک شنبه 30 فروردین 1394, 21:58 عصر
دوست عزیز خروجی وب متود شما باید به فرمت json باشه

خروجی جیسون چه جوریه؟ میشه مثال بزنید؟

negar442
یک شنبه 30 فروردین 1394, 22:06 عصر
دوتا ایراد تو پروژه شما بود:
یکی کلاس های شما توی فضای نام قرار نداشتن. یعنی namespace نداشتن و از اونجا که وب متد شما بصورت static تعریف شده لازمه که توی فضای نام باشه.
دوم شما برای پروژه Virtual Path تعریف کرده بودین و پروژه توی مسیر http://localhost:1266/WebSite4/Default5.aspx اجرا میشد و از اونجا که شما توی جی کوئری مسیر Default5.aspx/test رو فراخونی میکنید طبیعیه که وب متد اجرا نشه.

من متوجه توضیح شما نشدم کدوم کلاسهای من تو فضای نام نبود؟ جریان Virtual Path چیه؟ من کجا یه همچین چیزی تعریف کردم؟
تنها چیزی که متوجه شدم این بود که با مقایسه کدهای خودم و کدهای شما تفاوتی رو پیدا نکردم جز یک
using System.Linq;
این خط رو به پروژم اضافه کردم که از همین ارور گرفت! اینجا رو چی کار باید کرد؟

negar442
دوشنبه 31 فروردین 1394, 18:45 عصر
منتظر پاسختان هستم!