【问题标题】:Populate Textbox based on another Textbox MVC 4基于另一个文本框 MVC 4 填充文本框
【发布时间】:2014-05-21 07:02:48
【问题描述】:

我正在尝试根据另一个文本框填充文本框值,但我无法填充另一个文本框。我正在分享我的代码,请指导我提供最佳解决方案

动作方法:

[HttpGet]
        public ActionResult GetInfo(string Email)
        {

            var result = (from c in db.Customers
                          where c.Email.ToLower().Contains(Email.ToLower())
                          select new { c.FirstMidName }).Take(6);

            return Json(result, JsonRequestBehavior.AllowGet);
        }

脚本:

$(document).ready(function () {
            var Email;
            $(function () {
                $("#Email").keydown(function () {
                    Email = $("#Email").val();
                    $.ajax({
                        type: "GET",
                        url: 'Admin/Ticket/GetInfo',
                        data: { Email: Email },
                        success: function (data) {
                            if (data) {
                                alert(data);
                                $('#Phone').text(data);
                            }
                        }
                    });
                });
            });

我已经搜索了互联网,但找不到任何合适的解决方案。请指导我

【问题讨论】:

  • 为什么要在 document-ready 处理程序中使用 document-ready 处理程序?
  • @Satpal 我已经尝试删除它,但我仍然遇到同样的问题
  • ajax 调用的错误是什么?
  • 在您当前发布的内容中,没有什么让我觉得容易出错(除了可能是双 document.ready,但您说这是固定的)。您能否详细说明尝试时会发生什么? ajax 调用是否被发送出去?它回来了吗?你收到警报了吗?你得到什么错误?
  • 可以显示响应json吗?

标签: jquery ajax asp.net-mvc json asp.net-mvc-4


【解决方案1】:

你需要这样做并且你必须使用val()而不是text()来设置文本框值:

success: function (data) {
                            if (data) {
                                alert(data.FirstMidName);
                                $('#Phone').val(data.FirstMidName);
                            }

也在您的 ajax 调用集 dataType

 $.ajax({
                        type: "GET",
                        url: 'Admin/Ticket/GetInfo',
                        data: { Email: Email },
                        dataType:"json",
                        success: function (data) {
                            if (data) {
                                alert(data.FirstMidName);
                                $('#Phone').val(data.FirstMidName);
                            }
                        }
                    });

See FIDDLE DEMO

【讨论】:

  • 我没有收到任何警报
  • 我之前试过这个,我已经清楚地提到我成功获得了json响应但无法将值绑定到文本框
  • IN alert 你能看到名字吗?
  • 不,我只是看到未定义
  • 您错过了 ajax 的数据类型属性,将其设置为 json,如下所示:dataType:"json"
【解决方案2】:

@Flater i'm not getting any error, i'm getting the JSON response successfully here it is "FirstMidName":"usama" but it is not binding to texbox this is the problem

$('#Phone').text(data); //your code

问题是您将文本设置为 data,但您已确认 data 有一个名为 FirstMidName 的字段(换句话说,data 不是一个字符串!)。因此,您应该引用该字段:

$('#Phone').val(data.FirstMidName); //my fix

编辑我还将.text() 更改为.val()。在处理表单输入元素时,您应该使用后者。

【讨论】:

  • 尝试将以下内容添加到success 回调中,以查看您的数据格式是否正确:alert(JSON.stringify(data)) 这应该会显示您的整个数据对象。 alert(data.FirstMidName) 这应该向您显示您想要的值。您能否确认两个警报框是否都显示了您的预期?
  • 没关系!认为我找到了 :) 使用 $('#Phone').val(data.FirstMidName); 注意我将 .text() 更改为 .val()
  • 我收到未定义警报
  • 适合哪一个?没关系,但这意味着你在alert 中的任何东西都不存在(或者没有任何价值,将其视为null)。所以这意味着您的 data 对象是空的,或者它没有名为 FirstMidName 的字段。
  • 它不是空的我已经尝试将直接链接放在浏览器中并下载 json 响应文件,你能告诉我一些其他的解决方案吗?就像我如何在当前文本框的基础上填充其他文本框值?
【解决方案3】:

我遇到了与您的问题类似的问题,我不确定您是否设法解决了问题,但只是进行了更改。

$('#Phone').val(data.FirstMidName);
to
$('#Phone').val(data[0].FirstMidName);

JSON 结果是一个数组,因此您必须使用索引。希望这对其他人有帮助。 同样在您的控制器 Action 中,您请求多个记录,您必须将其更改为 Take(1)

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多