javascript - 为什么 jquery $.ajax 会删除数据中的换行符而 $.get 不会?

标签 javascript jquery ajax

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

$.ajax 去除了通过函数传递的数据的换行符,而 $.get 则没有。

我曾尝试将数据类型显式设置为文本和 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 响应,您会看到 <br />被添加到 $.get 而不是 $.ajax。

ajaxtest.html

<form method="GET" onsubmit="return false">
    <textarea id="data" name="data">a
        b
        c</textarea>
    <input type="submit" value="Submit" id="submit">        
</form>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$('#submit').click(function(){
   var data = $('#data').val();

   $.get("data.php", { data: data });


   $.ajax({
        url:"data.php",
        type:'GET',
        data:'data='+data});

});   
</script>

数据.php

<?php  echo nl2br($_GET['data']); ?>

最佳答案

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

var part1 =/\n/g;

var newc_data = old_data.replace(part1,"< br >") ;

这可能是避免将文本作为格式的一个很好的理由。但就我而言,我想编写一些智能将文本转换为 json。

关于javascript - 为什么 jquery $.ajax 会删除数据中的换行符而 $.get 不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7017068/

相关文章:

javascript - 如何使用 jQuery 将 url 的 # 部分保留在 load() 上?

javascript - DOM:我无法访问动态创建的元素。怎么了

javascript - 具有多个按钮的 Jquery 调用一个发送不同参数的函数

java - Spring MVC 中的多个多部分文件 - Ajax

javascript - 如何在 Web Worker 中使用 emscripted .js 库

javascript - 如何区分单击提交按钮和在输入中输入以提交表单?

javascript - 将 django 模板变量传递给 js 数据表

javascript - 如何追加到刚刚追加的div

javascript - 从二进制 "01000111"中获取所有索引值为 1

javascript - Phone gap 3.0 + sencha touch 在设备浏览器中打开 url