使用JQuery在POST方法上发送多行文本

时间:2011-11-10 10:54:47

标签: jquery asp.net-mvc ajax vb.net post

我在JQuery中有这个功能:

var dataGet = 'LimFile=' + $('#LimFile').val() + '&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行,也就是没有被拆分,就像新行已经丢失一样。

2 个答案:

答案 0 :(得分:1)

你永远不应该将字符串作为data传递,而是传递一个对象,因为在这种情况下jQuery会正确编码它:

var dataGet = {LimFile:  $('#LimFile').val(), ProductNumber: $('#ArtNoInsert').val()};

这可能解决了你的问题 - 当POST一个包含换行符的普通字符串时,它们可能会破坏你的东西。


此外,请注意,软线包裹(例如,在未按 ENTER 键的情况下到达行尾时)已发送到服务器。虽然您可以使用wrap="hard"作为@RoryMcCrossan建议,但更好的解决方案是将文本包装在服务器上,因为您无论如何都无法信任客户端。

答案 1 :(得分:0)

为什么不在发送端转义$('#LimFile')。val()并在接收端转义它?我发现它更“安全”。