2015-11-12 2 views
0

Так вот мой Аякс пост:Аякс пост видит только первый из параметров

$("#defaultMigration").click(function(){ 

    $.ajax({ 
     type: "POST", 
     url: "/Svn2GitService/services/svn2git/defaultMigration", 
     contentType: 'application/json', 
     data: JSON.stringify({ svnUrl : $("#svnUrl").val(), 
           gitUrl : $("#gitUrl").val(), 
           username : $("#username").val(), 
           password : $("#password").val() 
      }), 
     dataType: 'text', 
     success: function(response){ 
      alert("Success!" + response); 
     }, 
     failure: function(response) { 
      alert("Error! " + response); 
     } 
    }); 
}); 

Когда я делаю System.out.println в моей службе, я вижу, что svnUrl паров являются единственным, который получает ничего. Фактически, он получает все значения выше. т. е. svn url, git url, имя пользователя и пароль.

Почему это так?

+0

Я думаю, ваша проблема кодирования URL. Если значение '$ (" # svnUrl "). Val()' или '$ (" # gitUrl "). Val()' содержит '&' в своих значениях, источник, отправленный на сервер, будет разбит на ' символ. – TheCarver

ответ

0

Просто из любопытства попробуйте следующее. Если это сработает, я объясню, что произошло после этого.

Я использую функцию jQuery's $.param() для сериализации объекта data.

$ .param()

Создать упорядоченное представление массива, простой объект, или объект JQuery, пригодный для использования в строке URL запроса или запроса Ajax.

var data = { 
    svnUrl : $("#svnUrl").val(), 
    gitUrl : $("#gitUrl").val(), 
    username : $("#username").val(), 
    password : $("#password").val() 
} 

data = $.param(data); 

$.ajax({ 
    type: "POST", 
    url: "/Svn2GitService/services/svn2git/defaultMigration", 
    contentType: 'application/json', 
    data: JSON.stringify(data), 
    dataType: 'text', 
    success: function(response){ 
     alert("Success!" + response); 
    }, 
    failure: function(response) { 
     alert("Error! " + response); 
    } 
}); 
Смежные вопросы