0

我正在通过 jquery 进行调用以从 Django 服务器加载一段 HTML。

$('#search_result').load(url, function(){       
        ...
    });

网址是这样创建的:

url = url + '&' + keyword + '=' + value;    

只要关键字没有空格,它就可以正常工作,但是像“Fixed Bid”这样的东西会被截断为简单的“Fixed”,这是一个问题。

/deals/?ajax&sales_term=Fixed

我应该用其他东西替换空间吗?如果我可以用 Django 识别为空格的字符替换它并在检索时将其转换回来,那就太好了。那将是非常有效的。

4

3 回答 3

4

您必须对您的 URL 进行编码。试试这个:encodeURIComponent。问题是,您需要使用 %20 来表示空间,这由 encodeURIComponent 负责。

于 2012-09-05T21:38:36.007 回答
3

只需使用jQuery.param

url = {};
url[keyword] = value;

'?' + $.param(url); // ?keyword=value
于 2012-09-05T21:38:55.850 回答
0

Url 对您的 url 进行编码,url 中的空格表示存在一个选择器,该选择器将用于过滤掉要加载到元素中的内容。

加载页面片段
.load() 方法与 $.get() 不同,它允许我们指定要插入的远程文档的一部分。这是通过 url 参数的特殊语法实现的。如果字符串中包含一个或多个空格字符,则假定字符串中第一个空格后面的部分是确定要加载的内容的 jQuery 选择器。

我们可以修改上面的示例以仅使用获取的文档的一部分:

$('#result').load('ajax/test.html #container');
当这个方法执行时,它会检索 ajax/test.html 的内容,然后 jQuery 会解析返回的文档以找到 ID 为 container 的元素。该元素及其内容被插入到 ID 为 result 的元素中,其余检索到的文档将被丢弃。

jQuery 使用浏览器的 .innerHTML 属性来解析检索到的文档并将其插入到当前文档中。在此过程中,浏览器通常会从文档中过滤元素,例如 、 或 元素。因此,通过 .load() 检索到的元素可能与浏览器直接检索到的文档不完全相同。

http://api.jquery.com/load/

于 2012-09-05T21:38:46.770 回答