为什么jquery $ .ajax会删除数据中的换行符而$ .get却没有?

我使用$ .ajax和$ .get调用相同的PHP脚本,得到两个不同的结果。

$ .ajax会从通过函数传递的数据中删除换行符,而$ .get则不会。

我已经尝试将dataType显式设置为text和html而没有运气。 $ .get的大多数参数在$ .ajax中默认为相同。

http://api.jquery.com/jQuery.ajax/

这是一个错误吗?

这是我使用的确切代码:

$.get("lib/ajax_scripts/set-product-value.php", { input_id: input_id, val:value }); $.ajax({ url:"lib/ajax_scripts/set-product-value.php", type:'GET', data:'input_id='+input_id+'&val='+value}); 

以下是任何人都可以尝试访问启用PHP的服务器和firebug的代码。 查看每个请求的firebug响应,您将看到
被添加到$ .get而不是$ .ajax。

ajaxtest.html

 
$('#submit').click(function(){ var data = $('#data').val(); $.get("data.php", { data: data }); $.ajax({ url:"data.php", type:'GET', data:'data='+data}); });

data.php

  

当我将它附加到我的html时,$ Ajax返回了缺少换行符的文本。 由于我想保存格式,我不得不在其中添加标签。 所以我使用字符串函数替换如下:

var part1 = / \ n / g;

var newc_data = old_data.replace(part1,“
”);

这可能是避免将文本作为格式的一个很好的理由。 但在我的情况下,我想写一些智能来将文本转换为json。

你应该得到相同的结果。 根据jQuery.get的文档:

这是一个简写的Ajax函数,相当于:

 $.ajax({ url: url, data: data, success: success, dataType: dataType }); 

此外,如果你看一下jQuery源代码 ,你可以清楚地看到.get只是.ajax的包装器:

 jQuery.each( [ "get", "post" ], function( i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // shift arguments if data argument was omitted if ( jQuery.isFunction( data ) ) { type = type || callback; callback = data; data = undefined; } return jQuery.ajax({ type: method, url: url, data: data, success: callback, dataType: type }); }; }); 

你确定你没有将其他参数传递给jQuery.ajax吗? 您可能希望发布您为每个代码使用的代码,以查看此处是否还有其他内容。