#jquery #asp.net-mvc #ajax #vb.net #post
#jquery #asp.net-mvc #ajax #vb.net #Публикация
Вопрос:
У меня есть эта функция в jQuery:
var dataGet = 'LimFile=' $('#LimFile').val() 'amp;ProductNumber=' $('#ArtNoInsert').val();
$.ajax({
type: 'post',
url: '/Admin/InsertLim',
data: dataGet,
success: function (r) {
alert('Product lim entry inserted!');
},
error: function (req, status, error) {
alert(error)
}
})
И предполагается, что он считывает несколько строк из LimFile и отправляет их в строку в VB.NET .
Проблема в том, что когда я его отлаживаю, я вижу, что строка присутствует во всю длину. И когда я разделяю его с помощью vbNewLine, это показывает, что есть только 1 строка, то есть ничего не разделено, как будто новые строки были потеряны.
Комментарии:
1. Прочитайте документацию ( api.jquery.com/jQuery.ajax ) в разделе данные. вы преобразуете свои многострочные данные в одну строку. Вместо этого передайте его как объект / массив.
Ответ №1:
Вы никогда не должны передавать строку как data
, а скорее объект, поскольку в этом случае jQuery заботится о ее правильном кодировании:
var dataGet = {LimFile: $('#LimFile').val(), ProductNumber: $('#ArtNoInsert').val()};
Вероятно, это устраняет вашу проблему — при отправке простой строки, содержащей разрывы строк, они могут что-то нарушать.
Кроме того, обратите внимание, что мягкая перенос строки (например, при достижении конца строки без нажатия ENTER клавиши) не отправляется на сервер. Хотя вы могли бы использовать wrap="hard"
, как предложил @RoryMcCrossan, лучшим решением является перенос текста на сервер, поскольку вы все равно не можете доверять клиенту.
Комментарии:
1. Тем не менее, когда я разделяю с помощью vbNewLine, это все еще одна большая строка, я разделяю ее следующим образом: limTestValues = csvValues. Разделение (vbNewLine). ToList
2. Вы уверены, что в тексте есть и
vbNewLine
(вероятноrn
) разрывы строк? В зависимости от операционной системы пользователя текст может содержать толькоn
разрывы строк.3. Хм, текст действительно содержит их, и теперь я попробовал разделить по среде. Перевод строки, не работает восемь раз =/
Ответ №2:
Почему бы просто не экранировать $(‘#LimFile’).val() на стороне отправки и не экранировать его на стороне получения? Я нахожу это намного более «безопасным».