Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript特殊字符_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript特殊字符

Javascript特殊字符,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个带有表单的html。 用户提交表单后,表单中的值将通过ajax发送到数据库。 我的问题是,用户提交的表单在其中一个字段中带有加号(+),加号不会显示在db中 我的代码: function update() { var branch_id = 1; var saleTitle = $("#title").val(); var saleText = $("#text").val(); var imgSrc = $("#imgSrc").html();

我有一个带有表单的html。 用户提交表单后,表单中的值将通过ajax发送到数据库。 我的问题是,用户提交的表单在其中一个字段中带有加号(+),加号不会显示在db中

我的代码:

function update()
{
    var branch_id = 1;
    var saleTitle = $("#title").val();
    var saleText = $("#text").val();
    var imgSrc = $("#imgSrc").html();
    var datastr ='branch_id=' + branch_id + '&saleTitle=' + saleTitle +
                 '&saleText=' + saleText + '&imgSrc=' + imgSrc + '&func=update';

         $.ajax({
         type: "POST",
         url: "update.php",
         data: datastr,
         success: function(msg){
             //alert( "Data Saved: " + msg );
             if (msg == "")
             {
                 $("#message").html("Update was successful!");
             }
             else
             {
                 $("#message").html("Error") + "   " + msg;
             }
         }
     });
}

在带有加号的字段上使用:
encodeURIComponent(xxx)

encodeURIComponent('~!@#$%^&*(){}[]=:/,;?+\'"\\')
将导致:

~!%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%2C%3B%3F%2B'%22%5C

在带有加号的字段上使用:
encodeURIComponent(xxx)

encodeURIComponent('~!@#$%^&*(){}[]=:/,;?+\'"\\')
将导致:

~!%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%2C%3B%3F%2B'%22%5C

传递对象,而不是字符串

var dataobj = { 
    branch_id : branch_id,
    saleTitle : saleTitle,
    saleText  : saleText,
    imgSrc    : imgSrc,
    func      : "update"
};
// …
data: dataobj

然后jQuery将负责转义数据(
+
表示此数据格式中的空格),并将其连接到应用程序/x-www-form-urlencoded数据中。

传递对象,而不是字符串

var dataobj = { 
    branch_id : branch_id,
    saleTitle : saleTitle,
    saleText  : saleText,
    imgSrc    : imgSrc,
    func      : "update"
};
// …
data: dataobj

然后jQuery将负责转义数据(
+
表示此数据格式中的空格),并将其连接到应用程序/x-www-form-urlencoded数据中。

您可以尝试jQuery序列化

您可以尝试jQuery序列化

您是否检查了从ajax调用中从服务器端获得的数据?您需要检查它是来自js(您正在向我们展示的代码)还是来自PHP(但您没有向我们展示您正在使用的代码)服务器端的数据是没有加号的字符串。数据库中的列类型是什么?@nikc.org它是带有utf_general_ci编码的varchar。您是否检查了从ajax调用中获得的服务器端数据?您需要检查它是来自js(您正在向我们展示的代码)还是来自PHP(但您没有向我们展示您正在使用的代码)。服务器端的数据是没有加号的字符串。您的数据库中的列类型是什么?@nikc.org它是带有utf_general_ci编码的varchar。这将对整个查询字符串进行编码,不是它的一个组件。实际上,您应该在单个变量(
branch\u id
saleTitles
)周围使用encodeURIComponent。该示例仍然无效,因为它将值直接分配给数据属性,而不是在查询字符串中使用它。@Quentin我看不出问题,我对其进行了编码并将其作为表单post发布。以查询字符串的形式发送它是不好的。@RoyiNamir-您的示例将
encodeuricomponent
的输出分配给
数据
属性。它需要合并到数据中(例如,在问题中启动
var datastr
的行上使用,而不是启动
data
的行)。这将编码整个查询字符串,而不是它的一个组件。实际上,您应该在各个变量周围使用encodeURIComponent(
branch\u id
saleTitles
)该示例仍然不完整,因为它直接将值赋给数据属性,而不是在查询字符串中使用它。@Quentin我看不出问题,我对其进行编码并将其作为表单post发布。以查询字符串的形式发送它是不好的。@RoyiNamir-您的示例将
encodeuricomponent
的输出分配给
数据
属性。需要将其合并到数据中(例如,在问题中启动
var datastr
的行上使用,而不是启动
data
的行上使用)。这不起作用。并非所有数据都由表单字段的值组成:
var imgSrc=$(“#imgSrc”).html()那不行。并非所有数据都由表单字段的值组成:
var imgSrc=$(“#imgSrc”).html()