【问题标题】:JQuery.Ajax call with <> in string使用字符串中的 <> 调用 JQuery.Ajax
【发布时间】:2023-03-04 18:31:01
【问题描述】:

我有一个简单的 jquery ajax 调用来更新输入框中的数据。当我在输入中有任何标记时,例如 &lt;div&gt; 它不会进入控制器。关于如何调用 ajax 并保存到其中包含 html 代码标记的数据库 texxt 的任何帮助

$.ajax({
  type:post,
  url: "/dom/updatelement",
  data: "name="+name+&id="+id
});

name 可能包含标记。

【问题讨论】:

  • 如果您有语法高亮显示,您应该立即在代码中看到语法错误...

标签: jquery ajax string inequality


【解决方案1】:

这是在 POST 请求中发送数据的正确方法:

$.ajax({
  type: 'post',
  url: '/dom/updatelement',
  data: { name: name, id: id }
});

jQuery 将确保在使用此语法时正确地对数据进行 url 编码。

您当然可以使用encodeURIComponent 方法手动完成此操作:

$.ajax({
  type: 'post',
  url: '/dom/updatelement',
  data: 'name=' + encodeURIComponent(name) + '&id=' + encodeURIComponent(id)
});

但老实说,第一种方法似乎更具可读性和可取性。

【讨论】:

  • 谢谢,对不起,还在挣扎。只要我把
  • 这是一个 ASP.NET 应用程序吗? ASP.NET 自动阻止包含此类字符的请求。例如,在 ASP.NET MVC 中,您可以使用 [ValidateInput(false)] 属性装饰相应的控制器操作以禁用此行为。
【解决方案2】:

首先,您应该进行正确的 Ajax 调用:

$.ajax({
    type: "POST",
    url: "/dom/updatelement",
    data: {
        name: name,
        id: id
    }
});

接下来,您可以使用特殊函数(例如 PHP 中的 htmlspecialchars())在控制器部分转换 &lt;&gt; 等字符。

【讨论】:

  • 对不起,没有使用 PHP,使用 ASP.NET MVC 4,所以不能尝试特殊字符。只要我添加一个
猜你喜欢
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多