如何使用 ajax 和 jquery 更新特定的 div
Posted
技术标签:
【中文标题】如何使用 ajax 和 jquery 更新特定的 div【英文标题】:How to update a specific div with ajax and jquery 【发布时间】:2012-04-24 08:50:00 【问题描述】:我在现场工作,它有一个框架。想想gmail框架。就像 gmail 应用程序一样,我只希望在单击导航栏上的链接时更新内部 div。我已经得到它,所以 div 会发生变化,但它肯定不会给我我希望的结果。这是我所拥有的大致轮廓
<div id=container>
<div id=page>
... some child divs in here
</div></div>
因为容器有一个固定的滚动条,我不想改变它,我只想替换页面 div。这就是我设法在 jquery 方面提出的。我只是一个初学者,所以我真的不知道我在做什么,但我正在努力学习。
$(document).ready(function ()
$.ajaxSetup (
cache: false
);
var ajax_load = "<img src='bin/pics/loading.gif' alt='loading…' width='32px' height='32px' style='top: 250px; left: 250px;' />";
var loadUrl = "bin/ajax/load.html";
$("#mybuton").click(function()
$("#page").load(loadUrl);
location.hash = 'ajax';
);
);
加载的 html 包含这个
<link rel="stylesheet" type="text/css" href="bin/main.css" />
<div id="page">
<div id="child">
<h1> sometitle </h1>
</div>
</div>
有什么建议吗?
【问题讨论】:
你得到了什么结果?是否插入了 load.html 文件的内容?您是否希望该样式表在您的文档正文中执行任何操作? 是的,我得到了一些东西,但是 css 不能正常工作,我不确定是否应该为插入的 html 创建新的 id。像“#pageajax”之类的。但是是的,我的主要问题是不知道如何设置我插入的内容或要替换的 div 以及不替换的 div。我非常了解这些东西的基本原理,但我不确定。 (如果我理解正确的话)我个人会避免像这样动态加载样式表。我不确定所有浏览器都会遵守。将页面上所有可能的样式硬编码在一个或多个样式表中,然后通过切换 classNames 和/或.style...
/ .css(...)
来重新设置样式更为传统。
啊,好的,谢谢,我会试试看的。这更有意义。我真的不知道该怎么做。
【参考方案1】:
这里是 Jquery ajax 链接http://api.jquery.com/jQuery.ajax/
例如代码:
ajax_control = jQuery.ajax(
url: "target.php",
type: "POST",
data: variable_name: variable_value
);
ajax_control.always(function()
$('#content').html(ajax_control.responseText);
);
通过将调用分配给一个变量(上例中的“ajax_control”),您可以随时使用:
ajax_control.abort();
http://api.jquery.com/jQuery.post/ http://api.jquery.com/jQuery.get/
【讨论】:
【参考方案2】:我不喜欢用链接来回答,也不喜欢用文字来回答,所以这里有一个例子,说明如何制作 div/table 或大多数 html 容器来更改其内容。
如果您将 MVC 与 Razor 一起使用,它看起来像这样
TestView.cshtml
@using (Ajax.BeginForm("Test",
"TestController",
new AjaxOptions
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "searchResults" ))
Search User by ID: <input type="text" name="id" />
<input type="submit" value="Search" />
<table id="searchResults">
</table>
TestController.cs
public class TestController : Controller
public PartialViewResult Test(int id)
var model = myDbContext.Users.Single(q => q.UserID == id);
return PartialView("_PartialViewTest", model);
_PartialViewTest.cshtml
@model IEnumerable<MyApp.Models.User>
<table id="searchResults">
<tr>
<th>Name</th>
<th>Email</th>
</tr>
@foreach(var item in Model)
<tr>
<td>@item.Name</td>
<td>@item.Email</td>
</tr>
</table>
...如果您想使用经典的 ASP.NET 来实现,应该是这样的:
TestPage.aspx
<body>
<form id="form1" runat="server">
<div>
<button type="button" onclick='testCall()'>Test!</button>
<hr />
<div id="ajaxResult">
</div>
</div>
</form>
</body>
Scripts.js / TestPage.aspx
function testCall()
$.ajax(
url: "TestHandler.ashx",
dataType: 'json',
success: callbackTestCall
);
;
function callbackTestCall(payload)
document.getElementById("ajaxResult").innerHTML = payload;
;
TestHandler.ashx
public class TestHandler : IHttpHandler
public void ProcessRequest(HttpContext context)
javascriptSerializer jss = new JavaScriptSerializer();
Random random = new Random();
string actualData = random.Next(2001).ToString();
context.Response.ContentType = "text/plain";
context.Response.CacheControl = "no-cache";
context.Response.Write(jss.Serialize(actualData));
public bool IsReusable
// Whether or not the instance can be used for another request
get return true;
如果您需要更多信息,请告诉我。
【讨论】:
我编写的代码适用于 asp.net c#,但您可以将其调整为您使用的语言,我试图为您提供一种干净/简单的方法来更新 div。您使用哪种语言? 我使用 jquery 和 php。我从来没有用 asp.net 或 c# 做过任何事情。我正在查看您的代码,并且看起来很完整和详细(谢谢)我真的不明白发生了什么以上是关于如何使用 ajax 和 jquery 更新特定的 div的主要内容,如果未能解决你的问题,请参考以下文章
是否可以为特定的 jQuery Ajax 调用禁用 Turbolinks 以防止页面刷新和滚动?
复选框状态更改时如何更新mysql字段?使用 jquery (ajax)、php 和 mysql
如何使用 JQuery 使用 Ajax 函数更新每个 div 元素
如何使用 jQuery ajax() 方法异步提交 验证用户登录
如何在此 Codeigniter 应用程序中通过 jQuery Ajax 加载特定数据,而不是整个页面?
如何在使用 AJAX、Django REST API 和 jQuery 以模式形式更新记录时显示外键字段名称而不是 ID