Javascript “@”在jquery ajax数据中作为非法字符
我正在这样做一个Ajax调用Javascript “@”在jquery ajax数据中作为非法字符,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在这样做一个Ajax调用 var data = { fn: "course_signup", cid: 1249, cemail: emaifield }; $.ajax({ type: "POST", url: "/AjaxHandler", data: data,
var data = { fn: "course_signup", cid: 1249, cemail: emaifield };
$.ajax({
type: "POST",
url: "/AjaxHandler",
data: data,
success: function(data) {
},
error: function(xmlHttpRequest, textStatus, errorThrown) {
},
complete: function(data) {
}
});
正如您所看到的,在cemail字段中有一个@in,浏览器在这里抛出javascript错误
Error: SyntaxError: illegal character
Source Code:
var data = { fn: "course_signup", cid: 1249, cemail: as@asd.com
该电子邮件地址应为字符串:
var data = { fn: "course_signup", cid: 1249, cemail: "as@asd.com" };
^ ^
任何不是数字、布尔值或对象的值都应该用引号括起来。阅读不同的电子邮件,了解如何组织数据。用双引号写电子邮件:
var data = { fn: "course_signup", cid: 1249, cemail: "as@asd.com" };
您需要创建一个字符串:
var data = { fn: "course_signup", cid: 1249, cemail: "as@asd.com" };
这与jQuery没有任何关系。您的问题是它不是有效的javascript对象文字语法 字符串必须用引号括起来。除了键,如果它们具有有效的变量名 除非作用域中存在名为lol的变量,否则此选项无效:
var obj = {hey: lol};
这是
var obj = {hey: "lol"};
如果您的密钥不是有效的var名称,请同时引用它
var obj = {"123 hey there": "lol"};
在实际情况中,我对电子邮件字段使用了一个动态变量。它是一个C字符串,将在执行时呈现为电子邮件字符串。因此,我不可能将其插入双引号中。您仍然可以将其用C引号括起来,例如WebForms中的{cemail:},MVC.RGraham中的{cemail:@this.Model.EmailAddress},这将使您的代码容易受到攻击。使用cemail:@Html.RawHttpUtility.JavaScriptStringEncodethis.Model.EmailAddress进行MVC,并确保为WebForms进行JS编码。正在通知@Athul@SilverlightFox数据正在发送到服务器。如您所见,数据变量是在AJAX调用之外生成的,因此不会出现XSS。此外,razor HTML不是默认编码吗?但是,它是由服务器生成的,因此精心编制的字符串可能会脱离ajax调用的上下文并利用xss漏洞。在实际情况中,我对电子邮件字段使用动态变量。它是一个C字符串,将在执行时呈现为电子邮件字符串。所以我不可能在双引号中插入它。。。C!=JS。只需提前编写emailField,然后将其放入数据对象中。引号用于文字字符串。