【问题标题】:asp.net webservice jquery populate textboxasp.net webservice jquery 填充文本框
【发布时间】:2017-07-26 19:21:50
【问题描述】:

我想通过提供当前 URL 和当前用户从 Web 服务中获取 3 个值。我的网络服务接受 2 个参数 URL 和用户。 Web 服务工作正常。

现在我想使用 jquery.in txtOrgCity = city, in txtPin = pin, in txtCountry = country 将这 3 个值放在 3 个不同的文本框中

下面是 txtOrgCity 的代码

$(document).ready(function () {
            $('#txtOrgCity').val({
                source: function (request, response) {
                    $.ajax({
                        url: '../lead_hunter.asmx/GetOrgCity',
                        method: 'post',
                        contentType: 'application/json;charset=utf-8',
                        data: JSON.stringify({ url: "http://srv3.testsrv.com/homepage", user: "testuser@testsrv.com" }),
                        dataType: 'json',
                        success: function (data) {
                            response(data.d);

                        },
                        error: function (err) {
                            alert(err);
                        }
                    });

当我运行它时,它会在文本框中给我 [object object]。

我如何定义为 txtOrgCity 获取 City,为 txtOrgPin 获取 pin,为 txtOrgCountry 获取响应(data.d)的国家/地区?

我是否需要为其他 2 个文本框或任何更好的方式复制相同的代码?

给定的代码仅适用于一些 txtbox 自动完成功能,它运行良好,所以我只是希望它根据我的需要进行一些修改。 $('#txtOrgCity').val 是 $('#txtOrgCity').autocomplete

任何帮助将不胜感激。

-- 谢谢

【问题讨论】:

    标签: javascript c# jquery asp.net web-services


    【解决方案1】:

    我建议您在谷歌浏览器中打开它。打开您的开发人员工具(按 f12)并打开资源并选择您当前正在处理的页面。然后使用查找框搜索触发 ajax 的 javascript 方法,并在 ajax 调用的成功部分放置一个断点。现在运行您的代码并等待到达断点。现在您可以看到 data.d 对象中的内容。不要恢复并继续调试。打开控制台选项卡并输入data.d.,您应该会看到一个智能选项框,其中包含 data.d 对象中的所有变量。当您反序列化您的数据并将其作为 json 返回给您的 ajax 调用时,您应该以您命名它们的任何方式看到城市、大头针和国家/地区的变量。

    例如,如果您在控制台中写入data.d.city,它应该会写出相应的值。您的服务传回浏览器的任何其他 json 变量也是如此。

    有了这些信息,就可以很容易地使用 jquery 并对数据做你想做的事情。因此,在您的 ajax 调用的成功部分中,您可以编写:

     $("#txtOrgCity").val(data.d.city);
     $("#txtPin").val(data.d.pin);
     $("#txtCountry").val(data.d.country);
    

    附言我在手机上写字。

    对于您的示例,您不应再写出相同的代码两次。不要在 jquery .val() 中调用 ajax,这是错误的。创建一个处理您的 ajax 的新函数,从页面加载或您需要的任何地方调用它:

     function loadData(//put your user parameter in here if you need){
     $.ajax({
                        url: '../lead_hunter.asmx/GetOrgCity',
                        method: 'post',
                        contentType: 'application/json;charset=utf-8',
                        data: JSON.stringify({ url: "http://srv3.testsrv.com/homepage", user: "testuser@testsrv.com" }),
                        dataType: 'json',
                        success: function (data) {                   
                             $("#txtOrgCity").val(data.d.city);
                             $("#txtPin").val(data.d.pin);
                             $("#txtCountry").val(data.d.country);                               
                         },
                        error: function (err) {
                            //welldone for handling your error message. Many people neglect this. As a developer that is like coding blindly. At the very least you can console.log(err); if you don't want the user to see
                            alert(err);
                        }
                    });
     }
    

    【讨论】:

    • 非常感谢哥们...这就像一个魅力...!虽然我没有得到反序列化部分,但我得到了 data.d[0] 等数组......并从中得到了我的值。再次感谢。你的手机写作能力是gr8。
    • 对不起,我的意思是序列化。在 C# 中,您将一个类的实例序列化为 json,然后将该 json 从您的 Web 服务返回给客户端。反序列化是将 json 转换为 C# 类的实例。你可以在这里看到一个例子:msdn.microsoft.com/en-us/library/bb410770(v=vs.110).aspx(ps你能把我的答案标记为正确吗?)
    【解决方案2】:

    而不是 $('#txtOrgCity').val({})

    在您的 .ready 函数中首先进行 AJAX 调用。 将 d.OrgCity、d.OrgPin 和 d.OrgCountry 存储到一些本地 JavaScript 变量中。在 Ajax 调用成功时,使用这些值存入文本框,如

    $('#txtOrgCity').val(d.OrgCity)

    【讨论】:

    • 我觉得这会有所帮助,但我对 javascript 和 jquery 完全陌生...请您帮忙
    • $(document).ready(function() { $.ajax({ type: 'POST', async:false, url: '../lead_hunter.asmx/GetOrgCity', contentType: ' application/json;charset=utf-8', 数据:JSON.stringify({ url: "srv3.testsrv.com/homepage", user: "testuser@testsrv.com" }), dataType: "json", 成功: function(data) { $('#txtOrgCity').val(data.d.OrgCity); $('#txtOrgPin').val(data.d.OrgPin); $('#txtOrgCountry').val(data.d.OrgCountry ); } }); });
    • 是的,这行得通。虽然我读过 Harry 的 stackoverflow.com/users/7619230/harry 答案 1st。我也支持你。
    【解决方案3】:

    你在 JSON.stringify() 之后。所以你在哪里指定你的 .val() 你想要 .val(JSON.stringify());

    【讨论】:

    • 所以只需将这个 $('#txtOrgCity').val({ 更改为 $('#txtOrgCity').val(JSON.stringify()); ?
    • 是的,但是你的代码在stringify中......当前.val中的代码......基本上你当前的代码正在显示val:即它是一个对象,你需要一些东西来显示它作为字符串。
    猜你喜欢
    • 2017-08-26
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2011-06-21
    相关资源
    最近更新 更多