通过Ajax发送包含数据的“@”符号

时间:2011-03-22 07:06:49

标签: jquery ajax

我的代码就像下面一样。

$.ajax({               
    url:'http:://www.sample.com/checkmail/'+$('#txtemail').val(),
    success: function(data)
    {
        $('#response').html(data);
        if(data!="Success")                 
        {
            $('#txtemail').css("background-color","#FF8A8D");
        }
        else
        {
            $('#txtemail').css("background-color","white");
        }
    }
});

以上代码在传递没有“@”符号

的数据时有效

示例:

//passing Hello
txtemail = "Hello"

//ajax response message in firefox
GET http://www.example.com/checkmail/Hello 200 OK 503ms

但是,如果我通过下面的电子邮件,它会给出错误

Example: 
//passing hello
txtemail = "hello@eee.com"

//ajax response message in firefox
GET http://www.example.com/checkmail/hello@eee.com 400 Bad Request 26ms

任何建议如何克服这个问题

2 个答案:

答案 0 :(得分:3)

在电子邮件地址上使用encodeURIComponent()

url:'http://www.sample.com/checkmail/'+encodeURIComponent($('#txtemail').val()),

@是URL中的保留字符(对于username:password@domain方案),需要进行百分比编码。

答案 1 :(得分:0)

你必须对网址进行编码,因为Unicron说你也可以使用escape()函数....

url:'http://www.sample.com/checkmail/'+escape($('#txtemail').val())