【问题标题】:How do I store drop down value in AJAX call?如何在 AJAX 调用中存储下拉值?
【发布时间】:2018-05-31 23:19:53
【问题描述】:

我有一个表单,其中有一个下拉列表。下拉列表正在 AJAX 调用中填充。有一个按钮,单击它会发送 AJAX 调用并将要填充的数据作为选项返回到下拉列表。 现在,如果选择了该选项并成功提交了表单,则选择的值将存储在数据库中。

但是,如果我在下拉列表中选择一个选项,并且我的表单中有一些验证问题,那么在提交时,页面会显示错误并“刷新”。这导致在 AJAX 调用期间填充的选项消失,因为没有再次调用 ajax 来填充列表。

那么,如何在第一次 AJAX 调用期间存储该值,以便在页面刷新时存储或填充该值。

如果列表是手动填充的,即如果我事先知道选项,我可以将选定的值存储在隐藏变量中,但我不能在这里执行。

这是我的 AJAX 函数:

$.ajax({
  type: "POST",
  dataType: 'json',
  url: "/Controller/Action",
  data: {
    param: param,
  },
  success: function(data) {
    if (data.Response == "Unsuccessful") {
      console.log("Unsuccessful");
    } else if (data.Response == "Successful" || data.Response == "ConditionallySuccessful") {
      for (var i = 0; i < data.ExteriorColor.Data.length; i++) {
       //This is the drop down list which is populated
        $("#Exterior_Color").append($("<option></option>").val(data.ExteriorColor.Data[i]).html(data.ExteriorColor.Data[i]));
        console.log(data.ExteriorColor.Data[i]);
      }
   }
  },
  error: function(result) {
    console.log("Error while fetching data");
  }
});

【问题讨论】:

  • 如果它们是验证错误,则阻止提交,以便页面不会刷新并且用户可以更正错误。你从哪里调用ajax帖子?如果您在 submit 事件处理程序中,则可以返回 false,除非表单有效。
  • 你不能把你的ajax调用放在一个函数中,然后在页面重新加载后再次调用那个函数吗?
  • @SamyCode 在这种情况下,我将丢失在下拉列表中选择的选项
  • 这是一个 .Net 项目吗?也许是 MVC?

标签: javascript jquery asp.net ajax asp.net-mvc


【解决方案1】:

试试localstorage,在ajax调用成功后使用。

保存下拉对象:

//SAVING (put after the ajax call)

var myList= $("#Exterior_Color");

// Put the object into storage
localStorage.setItem('myList', JSON.stringify(myList));

还有还原部分:

//RESTORING (put after the page refresh)

// Retrieve the object from storage
var retrievedMyList = localStorage.getItem('myList');

console.log('myList: ', JSON.parse(retrievedMyList ));

【讨论】:

  • 但它也会返回选定的值吗?
  • 你可以使用 $("#Exterior_Color").on("change",funcion(){});刷新 localstore 中的 myList 对象(保存选定的值)
  • 我在这里遇到了问题。在阅读myList 时,我收到了Object,但它不包含下拉列表的选项。
  • 你应该 JSON.parse 它来恢复,尝试使用 Chrome 开发工具或一些浏览器开发工具调试对象以检查对象属性。
  • 我正在 JSON 解析它,正如您在示例中显示的那样。您所说的 chrome 开发工具是指使用 Postman 或其他此类应用程序吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
相关资源
最近更新 更多