【问题标题】:Escaping jQuery data being sent via POST转义通过 POST 发送的 jQuery 数据
【发布时间】:2011-01-14 23:10:39
【问题描述】:

我正在使用 jQuery.ajax 从页面中提取表单数据,并将其发送到我的数据库(通过另一个 PHP 页面)。

表单信息由以下人员收集:

var X=$('#div1').val();
var Y=$('#div2').val();

这用于构建 POST 字符串,即

var data='varx='+X+'&vary='+Y;

如果使用 & 字符,显然这是有问题的。转义变量的最佳方法是什么,特别是让用户可以安全地使用与号 (&)?

谢谢!

【问题讨论】:

    标签: javascript jquery escaping


    【解决方案1】:

    最好的方法是为数据使用一个对象。

    jQuery.post("yourScript.php", {
       varx: X,
       vary: Y
    });
    

    jQuery.ajax({
          url: "yourScript.php",         
          type: "POST",
          data: ({varx: X, vary: Y}),
          dataType: "text",
          success: function(msg){
             alert(msg);
          }
       }
    );
    

    您还可以使用 jQuery 的 serialize() 将表单数据作为序列化查询字符串获取:

    var data = jQuery(formSelector).serialize();
    

    .serialize() 方法创建一个文本 标准 URL 编码的字符串 符号。它在 jQuery 上运行 表示一组表单的对象 元素。表单元素可以是 几种类型。

    在我看来更漂亮:-)

    【讨论】:

      【解决方案2】:

      encodeURIComponent 将满足您的需求。

      var X = encodeURIComponent($('#div1').val());
      var Y = encodeURIComponent($('#div2').val());
      

      这将对所有可能不安全的字符进行编码。

      【讨论】:

        【解决方案3】:

        你可以使用 JavaScript 的转义函数

        var data='varx='+escape(X)+'&vary='+escape(Y);
        

        【讨论】:

        • escape() 函数在 JavaScript 1.5 版中已弃用。请改用 encodeURI() 或 encodeURIComponent()。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多