1

私は現場で働いており、フレームがあります。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>

助言がありますか?

4

2 に答える 2

1

リンクやテキストだけで答えるのは好きではないので、div/table またはほとんどの html コンテナーを作成してコンテンツを変更する方法の例を次に示します。

Razor で MVC を使用している場合は、次のようになります。

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; }
    }
}

さらに情報が必要な場合は、お知らせください。

于 2012-04-12T07:32:50.490 に答える
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/

于 2012-04-26T16:31:04.443 に答える