- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我意识到这里已经有很多类似的问题,但我无法弄清楚这个问题。
我有一个 Web 服务(C#、.net 3.5)。您需要了解的基本代码如下:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WSMember : System.Web.Services.WebService {
public WSMember () {
}
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public string GetMember(string IdMember)
{
//Ignore the parameter for now... I will be looking up a database with it...
//For now just return a minimal object:
Member m = new Member();
m.Surname = "Smith";
m.FirstName = "John";
return new JavaScriptSerializer().Serialize(m);
}
此外,在 web.config 中,我添加了以下内容(我刚刚在其他帖子上看到...这是正常/安全的吗?)
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
</protocols>
</webServices>
然后在 Default.aspx 中,我提供了两个关键引用...
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="jquery.json-2.2.min.js" ></script>
jquery.json-2.2.min.js 是从 Google 代码下载的
这是 Javascript:
<script type="text/javascript">
$(document).ready(function() {
$("#button1").click(function(event) {
var myData = { IdMember: "2" };
var encoded = $.toJSON(myData);
alert(encoded);
$.ajax({
type: "POST",
url: "WSMember.asmx/GetMember",
data: encoded,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert("worked" + msg.d);
//$("#sidebar").append(msg);
},
error: function(msg) {
alert(msg.d);
//$("#sidebar").append(msg);
}
});
});
});
</script>
当我执行它时,编码的 json 按预期出现在消息框中......即带有双引号:
{“IdMember”:“2”}
但是,它总是失败。即使对于没有数据传入的最基本的Hello World,它也会失败。我一直收到消息数据“未定义”的消息。
如果我只使用alert(msg),它会显示[object XMLHttpRequest]
有谁知道我的数据在哪里丢失了?
还有一个问题...我所做的事情有什么根本性的错误吗?
非常感谢。
编辑:
谢谢各位的回复。我已经尝试了以下所以...
UseHttpGet = true 现已更改为 false。 (再次 - 我在某处看到它,所以我尝试了......但我知道它不可能是正确的:-/)
假设 Web 服务现在返回一个字符串。我按如下方式构建字符串(似乎有点疯狂...序列化它做了完全相同的事情...)
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("\"Surname\":");
sb.Append("\"");
sb.Append(m.Surname);
sb.Append("\"");
sb.Append(",\"FirstName\":");
sb.Append("\"");
sb.Append(m.FirstName);
sb.Append("\"");
sb.Append("}");
return sb.ToString();
此代码返回类似以下内容:
{"Surname":"Smith","FirstName":"John"}
我仍然遇到完全相同的错误...
我也尝试过返回对象“Member”,因此代码变为:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Member GetMember(string IdMember)
{
Member m = new Member();
m.Surname = "Smith";
m.FirstName = "John";
return m;
}
这也会引发相同的错误。
抱歉,让您很痛苦...我已经阅读了这两个链接以及其他链接。只是不明白为什么这有什么不同。
是否有任何额外的配置设置我需要注意?
非常感谢您的回复。
更新:问题已解决。上述代码中的主要错误是:
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
应该是
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
此外,在表单上,当使用按钮调用 javascript 时,我错误地设置了输入类型...
<input id="button1" type="submit" value="Just a test" />
当它应该说:
<input id="button1" type="button" value="Just a test" />
非常感谢所有提供帮助的人。
最佳答案
在我看来,您的主要问题是您尝试手动使用 JavaScriptSerializer().Serialize
而不是返回对象。来自 Web 服务的响应将进行双重 JSON 编码。
你说得对!有很多密切的问题。看这里Can I return JSON from an .asmx Web Service if the ContentType is not JSON?和 Can't get jQuery Ajax to parse JSON webservice result你会(我希望)找到答案。
已更新:抱歉,您在未发布的地方有一个小错误。为了解决这个问题,我使用旧版本的 Visual Studio (VS2008) 创建了一个小项目,该项目几乎完全符合您的代码并且可以工作。我把它放在 http://www.ok-soft-gmbh.com/jQuery/WSMember.zip 。您可以下载它、编译并验证它是否有效。然后你可以将你的代码与我的代码进行比较并找到你的错误。
致以诚挚的问候
关于asp.net - 从 ASMX 返回 JSON,并在 Javascript 中正确处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196569/
我试图对 ASP.Net MVC 有一个高层次的理解,我开始意识到它看起来很像原始的 ASP 脚本。过去,我们将“模型”/业务逻辑代码组织到 VBScript 类或 VB COM 组件中。 当然,现在
我已经搜索了一段时间,但似乎找不到答案。 我想在我的旋转木马中显示一个计数器,左边是当前项目(工作),左边是项目总数。 我的代码:
. 最佳答案 Scott Gu 称这些为代码块。这就是我的看法。 http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax
我有一个使用 Visual Studio 2010/.net 4/VB 制作的网站。 我真的很喜欢我发现的 FAQ 系统的布局,因为它很简单,但它是经典的 asp。所以,显然,我不能包括我的母版页布局
好吧,对于你们许多人来说,这个问题可能有一个非常明显的答案,但它让我难住了。 我有一个 asp.net Web 表单,上面有两个控件(嗯,不止这两个,但我们将重点关注这些) - 第一个是 asp:dr
当我将 ASP.NET 复选框控件设置为 asp.net 更新面板的异步回发触发器时,EventName 属性是什么? 最佳答案 我相信它是 CheckedChanged。 关于asp.net - a
我有一个用经典 asp 编写的(巨大的)网站。现在我必须切换到 vb.net (razor)。有没有办法将这两个结合起来直到切换完成? 有没有办法让应用程序与经典的 asp 和 vb.net 一起工作
I am creating a products page, where the user selects an option in a radiobuttonlist for example, an
我最近将一个经典的 ASP 应用程序转换为 ASP.NET 3.5,但我觉得我的经典 ASP 版本要快一些(我不知道可能买家会后悔)。 所以你们能帮我解决这个问题吗,让我知道哪个更快,asp、asp.
从本周开始,我被要求开始学习如何使用 ASP 开发网站。我通过 XNA 对 C# 有一定的经验,所以这部分对我来说并不是什么麻烦。 我一直在关注Music Store Tutorial这需要我设置一个
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我想将一些表单变量发布到经典 ASP 页面中。我不想改变经典的 ASP 页面,因为需要完成大量的工作,以及消耗它们的页面数量。 经典的 ASP 页面需要将表单变量 Username 和 Userpas
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
在某种程度上,这可能是一个异端问题。我们有一个大型站点,其中许多页面仍在ASP中。通常,并没有真正动态的,而是包括(通过SSI或Server.Execute)定期重新生成的HTML块。看起来好像是一个
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我有一个遗留的 ASP 应用程序——在不久的某个时候——需要迁移到 ASP.Net 2.0(以与也在 2.0 中的其他应用程序兼容)。 对于这类事情是否有最佳实践,即作为第一步将当前 html、vbs
我目前在一家公司工作,该公司使用 ASP.NET Webforms 和旧 ASP 页面的组合进行 Web 开发。这对于他们当前的项目来说效果很好,但我想说服/建议他们切换到 ASP.NET MVC,因
我有一个经典的 asp 应用程序。我想将该页面的竞赛表格发布到 Asp.Net 表格。原因是我想在进入数据库之前使用我在 Asp.Net 页面中内置的大量逻辑进行验证,而我对 asp 不太了解。更不用
我知道在 ASP.NET MVC 中,您可以拥有移动 View 并执行类似 Index.mobile.cshtml 的操作。和 _Layout.mobile.cshtml并且服务器知道将这些 View
我需要从一些服务器端 c#.net 代码中调用经典 asp 页面上的 VBscript 函数 - 有谁知道一种干净的方法来做到这一点?在 .net 中重写函数不是一种选择。 我会再解释一下这个问题..
我是一名优秀的程序员,十分优秀!