当使用参数传递数据中的IP地址时,jQuery Ajax无法正常工作

时间:2018-06-25 11:26:53

标签: jquery ajax

当我传递IP地址或任何其他具有特殊字符的参数时,ajax方法不起作用。

$.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: '/MyPage.aspx/MyMethod',
                data: '{ name: ' + name + ', Ip:' + ip + '}',
                dataType: 'json',
                success: function (response) {
                    alert(response.d);
                },
                failure: function (response) {
                    alert(response.d);
                }
            });

有一种解决方案,可以在base 64中对输入进行编码。还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

创建一个对象并将其用于AJAX请求的data属性中,这将解决您的问题:

var dataObj = {
  name: name,
  Ip: ip
};

$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: '/MyPage.aspx/MyMethod',
  data: dataObj,
  dataType: 'json',
  success: function (response) {
    alert(response.d);
  },
  failure: function (response) {
    alert(response.d);
  }
});

答案 1 :(得分:1)

正如 CBroe 所说,您不应该手动组装JSON字符串,

由于您的参数可能有一些特殊字符,我建议您不要使用json发送参数。

您可以删除contentType并将数据更改为{name:name,Ip:ip}以直接发送参数

$.ajax({
        type: "POST",
        //contentType: "application/json; charset=utf-8", //remove it
        url: '/MyPage.aspx/MyMethod',
        data: {name:name,Ip:ip},
        dataType: 'json',
        success: function (response) {
            alert(response.d);
        },
        failure: function (response) {
            alert(response.d);
        }
});