【问题标题】:jquery ajax response removes the + characterjquery ajax响应删除+字符
【发布时间】:2009-11-05 20:05:08
【问题描述】:

更新:

看起来问题出在我从 html 开始读取值时。

这是标记:

<input name="someval" type="text" value="Receive (+ open)" />

我正在像这样读取someval 的值并将其传递给ajax 调用:

    $.ajax({

        data: 'someval=' + $("input[name=someval]").val(),

        success: function(resp) {
           $("#targetd").html(resp);
           alert(resp); 
        }
});

看起来问题是在将$("input[name=someval]").val() 连接到data: 'someval=' + 时发生的,因为$("input[name=someval]").val() 中有一个+

我正在对 php 脚本进行 ajax 调用,返回的响应包含 html 标记。我接受该响应并将其分配给 div 之后。

success: function(resp) {
   $("#targetd").html(resp);
   alert(resp); 
}

返回的部分响应应该是这样的。 (注意+ 符号)

<input name="someval" type="text" value="Receive (+ open)" />

它工作正常,我可以将它分配给 div,除了由于某种原因返回的标记缺少 + 符号

<input name="someval" type="text" value="Receive (  open)" />

当 php 脚本本身输出标记时,它工作正常,但是当标记通过 ajax 响应传递到页面时,+ 消失了。我没有对标记做任何特别的事情,如上面的代码所示,我只是在它返回后立即将其分配给 div。当我直接提醒响应时,+ 也丢失了,所以不仅仅是在它被分配给 div 时。不知道这里会发生什么。

【问题讨论】:

  • 请发布生成 ajax 响应的 php 代码部分
  • 何塞,你给了我一个想法,我会试试看并回复你/更新帖子。
  • 何塞,看起来问题比这更早。我首先通过 ajax 将该值从页面传递给 php。这就是最初的阅读错误发生的地方。将更新问题

标签: php javascript jquery ajax


【解决方案1】:

您是否尝试过对响应进行 HTML 编码?我在我的 javascript 中使用这些函数来编码/解码。

function HtmlEncode(value)
{
    return $('<div/>').text(value).html();
}

function HtmlDecode(value)
{
    return $('<div/>').html(value).text();
}

【讨论】:

    【解决方案2】:

    我建议尝试将您的加号 + 转义为 +看看是否能解决你的问题。如果是,那就是实体逃逸问题。

    【讨论】:

    • 感谢tooleb,我试了一下,可惜没用。 +1 虽然尝试提供帮助。
    • 所以如果您最初将“Recieve (&#43; open)”作为值并尝试了您的代码,结果是什么,只是好奇?
    • 它仍然缺少+,但事实证明这是因为它一开始就没有收到它。我首先读取someval 的值,然后将其提供给php 再次输出。我已更新问题以反映最近的故障排除。
    • 如果在将值传递到数据变量之前对其进行编码,它将起作用。尝试使用 Phil 的编码功能
    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多