无法让 jQuery Ajax 解析 JSON Web 服务结果

2023-12-14

我已经验证了我的 C# Webmethod 的 JSON 响应,所以我不认为这是问题所在。

我尝试使用简单的 jQuery $.ajax 解析结果,但无论出于何种原因,我无法获得正确触发和解析结果的方法,顺便说一句,似乎也无法获得触发结果的函数。它们对可返回的 JSON 对象的大小有限制吗?

我还从“Site.Master”页面中删除了这段代码,因为当我点击简单按钮时它总是会刷新。标签是否可以与 jQuery 元素(例如我从 DOM 获取的按钮输入)一起正常工作?

function ajax() {
//var myData = { qtype: "ProductName", query: "xbox" };
var myData = { "request": { qtype: "ProductName", query: "xbox"} };
$.ajax({
    type: "POST",
    url: "/webservice/WebService.asmx/updateProductsList",
    data: {InputData:$.toJSON(myData)},
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        // var msg = {__type: "Testportal.outputData", id: "li1234", message: "it's work!", myInt:101}
        alert("message=" + msg.d.ProductName + ", id=" + msg.d.Brand);
    },
    error: function (res, status) {
        if (status === "error") {
            // errorMessage can be an object with 3 string properties: ExceptionType, Message and StackTrace
            var errorMessage = $.parseJSON(res.responseText);
            alert(errorMessage.Message);
        }
    }
});

}

和页面:

 <asp:Button ID="Button1" runat="server" OnClientClick="ajax();"  Text="Button" /> 

以及服务器端 Web 方法:

 public class WebService : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public OutputData updateProductsList(InputData request)
    {
        OutputData result = new OutputData();
        var db = new App_Data.eCostDataContext();
        var q = from c in db.eCosts
                select c;

        if (!string.IsNullOrEmpty(request.qtype) && !string.IsNullOrEmpty(request.query))
        {
            q = q.Like(request.qtype, request.query);
        }

        //q = q.Skip((page - 1) * rp).Take(rp);
        result.products = q.ToList();

        searchObject search = new searchObject();

        foreach (App_Data.eCost product in result.products)
        {
            /* create new item list */
            searchResult elements = new searchResult()
            {
                id = product.ProductID,
                elements = GetPropertyList(product)
            };
            search.items.Add(elements);
        }
        return result;

    }

和辅助类:

    public class OutputData
{
    public string id { get; set; }
    public List<App_Data.eCost> products { get; set; }

}
public class InputData
{
    public string qtype { get; set; }
    public string query { get; set; }
}

您可能遇到的一个问题是,您没有采取任何措施来阻止按钮提交表单并在启动 $.ajax() 回调的同时执行完整的回发/重新加载。

我建议以不显眼的方式进行连接,而不是使用 OnClientClick 属性,如下所示:

$(document).ready(function() {
  // May need to use $('<%= Button1.ClientID %>') if your Button is 
  //  inside a naming container, such as a master page.
  $('#Button1').click(function(evt) {
    // This stops the form submission.
    evt.preventDefault();

    $.ajax({
      // Your $.ajax() code here.
    });
  });
});

我也同意 Oleg 的观点,即您应该使用 json2.js 进行 JSON 字符串化和解析。在较新的浏览器中,这将回退到浏览器对这些方法的本机实现,这更快并且使解析更安全。

Update:

要回答您有关数据的问题,不,这看起来不太正确。

您最终想要发送到服务器的内容是这样的(无格式):

{"request":{"gtype":"ProductName","query":"xbox"}}

为了实现这一点,你需要这样的东西:

var req = { request : { qtype: "ProductName", query: "xbox" }};

$.ajax({
  data: JSON.stringify(req),
  // Remaining $.ajax() parameters
});

请记住request, qtype, and query必须与您的服务器端结构匹配并区分大小写。

您还可以更详细地定义请求对象(我个人更喜欢这样做,以保持事物清晰易读):

var req = { };

req.request = { };

req.request.qtype = "ProductName";
req.request.query = "xbox";

我在这里写了更多关于此的内容,如果您感兴趣的话:http://encosia.com/2009/04/07/using-complex-types-to-make-calling-services-less-complex/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让 jQuery Ajax 解析 JSON Web 服务结果 的相关文章

  • jQuery:如何仅根据表标题从表的列中选择值

    我有一个带有标题 ID 的表 我需要选择此标题下的所有字段 我无权访问源代码 并且该表中没有使用任何类 关于如何完成这件事有什么想法吗 要获取第一列 function var col td nth child 1
  • 如何从iframe访问文档中的

    I have an iframe 我在检查器元素中发现 img 标签位于具有 body 标签的 document 中 img src Images landingpage jpg 我需要访问此图像 landing page jpg 以便更改
  • popstate - 需要单击两次后退按钮才能真正返回

    我正在创建一个单页面并使用 PushState 来更改地址 现在 如果我向后推 则会触发 popstate 并且我想要使页面以动画方式从当前位置滚动到最后一个位置 当然 这是可行的 但页面会跳转到顶部 有谁知道如何防止这种行为 我正在使用
  • Jquery 点击时在多个图像之间切换

    我正在尝试使用 jquery 在单击图像后在三个图像之间切换 单击第三张图片后 它将切换回第一张图片 有没有一种方法可以使以下内容在两张以上的图片之间切换 并允许不止一次切换 jQuery document ready function c
  • 第一次点击时的 event.preventDefault() 然后删除

    如果它有一个类子导航 我会禁用默认锚点 如下所示这把小提琴 http jsfiddle net aaronk85 5Quee 我只希望在第一次单击时禁用此功能 然后我希望恢复正常的锚点功能 做这个的最好方式是什么 我尝试了涉及以下代码的操作
  • 使用 jquery fullCalendar 时,为什么我在切换月份后看到重复的事件?

    I am 使用 jquery fullCalendar 插件 http arshaw com fullcalendar 我遇到了一个奇怪的问题 当我加载第一个月 在本例中为 2013 年 12 月 时 它工作正常 我调用我的 ajax 事件
  • jquery UI datepicker仅月份和年份的css定位问题

    我已经实施了这里讨论的解决方案 JQuery 日期时间选择器 只需选择月份和年份 https stackoverflow com questions 4079525 jquery datetime picker need to pick m
  • 将字符串从 Struts2 操作返回到 jQuery [重复]

    这个问题在这里已经有答案了 我使用 jQuery Ajax 调用 Struts2 操作 如下所示 ajax url callAction action type POST data data dataType string success
  • AJAX 表单正在向自身提交?

    我不知道今晚发生了什么 但我似乎无法让 AJAX 工作 提交表单后 它会使用 URL 中的值刷新页面 我正在使用具有提交处理程序的验证插件 但它仍然会刷新 我以前用过这个方法 没有出现任何问题 看看这里的页面 让我知道您的想法 div cl
  • 是否使用 delegate()

    有没有人能够解释为什么使用以下函数 potato delegate frenchFry click function e do something 优于 potato bind click function e if e target ha
  • Internet Explore 8 不会使用 .attr() 更改图像 src

    我设置了一个页面 当用户用鼠标或触控板滚动时 该页面将快速浏览一系列图像 我使用 jQuery 来测量距页面顶部的距离 scrollTop 然后更改 DOM 中特定 id 的图像源 这在 Firefox Chrome Safari Oper
  • jQuery 验证插件在单击事件处理程序中时不会进行验证

    tournamentDesignTabs tabs tournamentDesign validate createTournament click function if tournamentDesign validate post cr
  • 无法在 Chrome 中获取对象的真实高度/宽度

    我有一个问题 如果我在 css 中设置图像高度并尝试获取高度 宽度 我会在不同的浏览器中得到不同的结果 有没有办法在所有浏览器中获得相同的尺寸 你可以找到一个活生生的例子here http web cinaird se pdf tester
  • 如何设置必须输入特定数字的字段?

    我想知道如何创建一个需要输入特定数字或文本的字段 例如 激活码 以及在输入的确认答案的情况下移动到 网页 并且在未确认的情况下移动到 另一页面 的按钮 使用必需的属性
  • 在grails控制器中识别ajax请求或浏览器请求

    我正在开发一个使用大量ajax的grails应用程序 如果请求是ajax调用 那么它应该给出响应 这部分正在工作 但是如果我在浏览器中输入URL 它应该带我到主页 索引页面而不是请求的页面 下面是ajax调用的示例gsp代码
  • 如何在具有相同值的下拉菜单上触发 jQuery 更改事件

    即使用户选择相同的值 如何每次都触发 jQuery 更改事件 我需要刷新效果 例如如果用户选择Lawyer它会发出警报hello然后用户再次选择Lawyer从下拉菜单中 它应该发出警报hello 我怎样才能实现它 以下是代码 jQuery
  • JSONP 使用 JQuery 从 HTTPS 协议获取 JSON

    我正在尝试获取从 https 安全站点发送的 JSON 客户端希望不要使用任何服务器端语言 全部都是 Javascript 我读到 当使用 Jquery 中的 ajax 函数时 我必须使用 JSONP 才能从安全站点加载 JSON 我的第一
  • Angularjs : $locationProvider.hashPrefix("!") ;

    我想将网址显示为 www test com 因为我正在使用 locationProvider hashPrefix 但它显示网址为 www test com 我想 哈希之前而不是哈希之后 Thanks var app angular mod
  • 选择单选按钮时隐藏/显示 3 个文本框

    我有 2 个单选按钮 选择一个文本框时 我想显示 3 个文本框 并在选择其他文本框时隐藏它 这是代码 这是我的 2 个单选按钮
  • 如果选中复选框则显示 div

    我正在尝试构建类似 WordPress 选项的东西 用于在创建文章时切换字段可见性 我所构建的依赖于 click函数使用相应的字段名称切换父项 我想知道如果选中该复选框 执行此操作的最佳方法是什么 因为如果您选中一个框并重新加载页面 因为它

随机推荐

  • ASP.net - 按钮 - Javascript 确认对话框 - 执行一些服务器端代码?

    我有一个简单的 ASP net 页面 用户可以在其中编辑有关自己的信息 单击 编辑 按钮时 表单进入编辑模式 并显示 保存 和 取消 按钮 其行为符合预期 我想做的是这样的 单击 保存 后 将显示一个 Javascript 确认对话框 询问
  • 对“DTLS_client_method”的未定义引用

    我目前正在尝试在 android 上实现 DTLS 以加密 UDP 数据报 为此 我构建了 openssl android 项目可以在这里找到 由此我得到了两个共享库 libssl so 和 libcrypto so 我将它们重命名为 li
  • Boost是如何实现这样的语法的呢?

    http www boost org doc libs 1 58 0 doc html program options tutorial html Declare the supported options desc add options
  • 从字符串中提取图像 src

    我试图将所有图像元素匹配为字符串 这是我的正则表达式 html match
  • 将闪亮与facet_grid结合起来

    我正在开展一个学校项目 其中有一些 dyplr 查询 我需要使用 Shiny 库使它们交互 现在我在 dyplr 中有一个查询 在那里我可以看到印度外卖餐厅每个国家的收入 我有以下查询 df gt group by Origin Jaar
  • Node 提供的 ejs 文件可以使用离线引导吗?

    我是节点和全栈开发的新手 希望我正确地提出这个问题 而不是粗心或冒犯您的特定理解水平 我的开发环境已连接互联网 但生产环境不会连接 我想将 bootstrap css 与节点一起使用 Apache httpd 不是生产环境中的一个选项 本地
  • 使用 MySQL Connector for .net 打开 MySQL 连接非常慢

    我正在尝试解决使用 MySQL Connector for net 打开连接时 MySQL 响应时间过长的问题 我已经使用 skip name resolve 安装了在 Azure VM Server 2008 上运行的 MySQL 5 5
  • 查找每个部门的最高薪水 - 是否有更有效的查询?

    我有一个有效的查询 但我怀疑我这样做效率低下 是否有更优雅的方法来查找每个部门的最高薪水以及赚取该薪水的员工 我正在做一个 cte 来查找每个部门 ID 的最高工资 然后通过匹配工资和部门 ID 将其与员工数据结合起来 我有下面的代码来构建
  • Slick2D 矩形碰撞检测

    我遇到一个问题 显示一个矩形与另一个矩形发生碰撞 所以我的问题是 如何获得相交方法来检查碰撞 或者说有其他方法来处理这种情况下的碰撞吗 我正在创建一款回合制战斗游戏 类似于 最终幻想 或 龙骑兵传奇 其中玩家的角色位于屏幕的右侧 敌人位于屏
  • 当我执行“git diff”时,如何获得并排差异?

    当我打字时git diff 我想看到并排的差异 就像diff y 或者喜欢在交互式差异工具中显示差异 例如kdiff3 如何才能做到这一点 尝试 git difftool Use git difftool代替git diff 你永远不会回去
  • MYSQL REGEXP 在 JSON 字符串中搜索

    我是 regexp 的初学者 我尝试在 json 格式的文本中搜索 但我无法使其正常工作 SELECT DISTINCT tag body FROM pages WHERE body REGEXP BINARY listeListeOuiN
  • 动态绘图在 IDLE 中有效,但在 Jupyter Notebook 中无效

    下面的代码在空闲状态下运行时工作正常 Python 3 6 空闲状态 import matplotlib pyplot as plt import time import random matplotlib inline ysample r
  • 让柱形图在图表控件中重叠

    我有以下问题 我需要在图表控件中显示多个列 一个图表区域中大约有七个系列 现在 当我有一个 列 类型的图表时 所有七列都会并排显示 我想做的就是将它们重叠 这可能吗 以下两个解决方案对我没有帮助 绘制重叠柱形图或条形图 图表控制两个数据集条
  • 当前无法从软件更新服务器获取 Xcode

    更新到 OS X 10 9 后 我的 macport 出现问题 我尝试遵循本手册https trac macports org wiki Migration修复它们 但是当我安装命令行工具时 xcode 选择 安装 我收到消息 无法安装该软
  • Keras 卷积层维数不匹配

    我正在尝试使用 Keras 来构建我的第一个神经网络 我的经验为零 我似乎无法弄清楚为什么我的维度不正确 我无法从他们的文档中弄清楚这个错误在抱怨什么 甚至是哪个层导致了它 我的模型接受 32 字节的数字数组 并应该在另一侧给出一个布尔值
  • 如何防止实体框架在 SQL Server 中生成低效查询?

    我在 EF 4 0 中定义了一个基于视图的实体 该视图位于一个包含大约 1800 万行数据的表上 我选择了实体的 4 个确定性属性作为该实体的复合实体键 我已通过 OData WCF 数据服务公开了对包含此视图的模型的访问 WCF 数据服务
  • 全屏视频视图未居中

    我使用此 XML 布局在我的活动中显示全屏 VideoView 视频是全屏的 但不居中 在横向模式下 它停留在屏幕左侧 并在屏幕右侧留下一些空白 如何使我的 VideoView 放置在屏幕中央
  • 查找 data.frame 中每列的频率

    我有一个如下的数据框 我想找到每列的频率 数据框 No Location Age Size Gender 1 Trinidad 25 3 1 2 Asin 33 2 2 3 Trinidad 33 5 2 4 Trinidad 23 3 1
  • “ascii”编解码器无法解码字节(使用 django 时出现问题)

    我用 python 编写了一个简单的 html 解析类 它似乎工作正常 然后我尝试将它与 django 一起使用 但出现此错误 ascii codec can t decode byte 0xc2 in position 54465 ord
  • 无法让 jQuery Ajax 解析 JSON Web 服务结果

    我已经验证了我的 C Webmethod 的 JSON 响应 所以我不认为这是问题所在 我尝试使用简单的 jQuery ajax 解析结果 但无论出于何种原因 我无法获得正确触发和解析结果的方法 顺便说一句 似乎也无法获得触发结果的函数 它