【问题标题】:Problem of loading external page into div by using jquery使用jquery将外部页面加载到div中的问题
【发布时间】:2011-04-03 04:00:53
【问题描述】:

我想创建搜索日志文件历史的搜索页面。由于显示区域的限制,我希望用户在显示搜索结果之前限制日志文件的日期范围。

我已经创建了日期选择器“from”和“to”,它们将为输入提供日期范围。该按钮将是提交此日期范围。

<Form action="/" id="searchDate">
From: <input type="text" name="from" id="datepickerFrom"> 
To: <input type="text" name="to" id="datepickerTo">
<input type="submit" value="Submit"/>
</Form>

这里是脚本...

<script>
// attach a submit handler to the form
$("#searchDate").submit(function(event) {
  // stop form from submitting normally
  event.preventDefault(); 
  var eID = $("#userID").val();
  // get some values from elements on the page:
  var $form = $( this ),
  termFrom = $form.find( 'input[name="from"]' ).val(),
  termTo = $form.find( 'input[name="to"]' ).val(),
  url = $form.attr( 'action' );
  // Send the data using post and put the results in a div
  $.post("/home/", function(data){
  $( "#result" ).load("/search/"); //.html(termFrom+" "+termTo);
  }

);
});
</script>

如果我使用 $( "#result" ).html(termFrom+" "+termTo);声明,但 .html 它只接受 html 字符串。我想将日期发布到外部页面以执行查询并将该外部页面加载到搜索框页面的 div 中,所以我使用 .load("/home/search/")。我只想测试加载外部页面而不传递帖子值,但它不起作用。为什么 .load() 在这种情况下不起作用?

提前致谢...

【问题讨论】:

  • 首先,它的form不是Form。
  • 改变Form形成结果还是一样...
  • 如果您转到/search 或您在浏览器中使用.load 调用的任何网址会发生什么?

标签: jquery search post html


【解决方案1】:

如果我正确理解“外部”,您会遇到跨域 ajax 策略问题 - 在 http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide 上阅读更多相关信息

【讨论】:

  • 从“同源”的定义en.wikipedia.org/wiki/Same_origin_policy 是否认为“/home”和“/home/search”在同一个协议和主机下?
  • 其实我用的是django。它运行相同的服务器相同的主机相同的端口。我将 url 更改为“/search/”,结果还是一样。这个外部意味着另一个使用相同设置的页面。
【解决方案2】:

如果您只是想在不发送任何帖子数据的情况下对其进行测试,那么只需使用:

$.post("/home/search", function(data){

  $( "#result" ).html(data);

});

当你不想实际发送你需要做的值时:

$.post("/home/search",{"termFrom": termFrom, "termTo": termTo}, function(data){
  $( "#result" ).html(data);
});

【讨论】:

  • 如果我使用“.html(str)”它可以正常工作,但如果我使用“.load(url)”它就不能工作
  • 你为什么要使用负载?所有负载都是使用 .html() 将响应 html 放入目标中...与您在成功回调中手动执行的操作相同。您在 javascript 控制台中看到任何错误吗?
  • 我正在使用 django。我不能使用仅返回 html 的 .html() 。我希望它调用我的控制器,即 python npt html。
  • 我意识到你在使用 Django,但我不清楚为什么你要在回调中同时使用 load $.post 为什么不直接调用提供您想以其中一种或另一种方式呈现的 html - 您试图从回调中使用 loadpost 的什么?我一定错过了您实际尝试做的事情,但我无法弄清楚:-)
  • 我让我的同事看了一下。她做的和你告诉我的完全一样。刷新几次,然后就可以了。非常感谢...
【解决方案3】:

您是否在以下代码中遗漏了引号?

 $.post("/home/, function(data){
  $( "#result" ).load("/home/search/"); //.html(termFrom+" "+termTo);
  }

这会导致问题吗?

【讨论】:

  • 这是我的错误。其实这点我已经解决了,结果还是一样。
猜你喜欢
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
相关资源
最近更新 更多