4

我一直在摸索一段时间,所以我会尽可能简单:在页面 A 上的表单提交中,我想将页面 B 的内容加载到页面 C 上的 div 中。示例:

登录.html

<form id="test" action="#" method="post">
  <input type="text" name="user"/>
  <input type="submit" name="login" value="login"/>
</form>

用户.php

<?php
  echo "Hello, ".$_POST['user'];
?>

索引.html

<body>
 <div id="target"></div>
</body>

最终结果(index.html)

“你好,约翰多”

我应该使用带有 URL 的 load() 方法作为第一个选择器吗?

$('#test').submit(function() {
 $('index.html#target').load('user.php');
});

PS:所有页面都在同一个域上。

PPS:我说的是在不同的页面内,而不是从不同的页面。

4

4 回答 4

1

更改$('index.html#target').load('user.php')$('#target').load('user.php');

如果您想使用以下代码获取带有 idtarget的div:user.php

$('#target').load('user.php #targer');

但是您可能想发送发布请求?

$.post('user.php', $('form').serialize(), function(data){
    $("#target").html(data)
});​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

需要学习的东西:

于 2012-08-08T14:13:05.170 回答
1

这似乎需要改变

$('index.html#target').load('user.php'); 

$('#target').load('user.php'); 

编辑:好的,我将添加一些希望有用的代码,并带有一些非常基本的标记。这不是特定于您的代码的,但这个概念应该很有用,并且只用几个 html 页面就可以测试,没什么特别的。

我将说明的是如何从一个页面、另一个页面调用脚本。我将拥有一个称为主页面的页面/窗口,以及另一个称为子页面的页面/窗口。这些都不是非常花哨的标记。

他们将使用一些非常基本的脚本调用进行交互,甚至将信息来回传递给彼此。我将首先介绍每个的标记,然后是每个中的脚本。每个页面的标题中都有 jQuery 链接。

我的主要观点是,只要您获得对每个页面的引用,您就可以使用它的修改版本来告诉一个页面使用从另一个页面实例化的脚本/动作来做某事。在我的示例中,我使用 window open 和 window.opener 作为此参考。

主页标记:页面是“TestCallbackmain.html”

<body>
    <div class='pagetop'>
        Test Callback Main
    </div>
    <div class='pageDetailContainer'>
        <div class='pageDetail'>
            Move on folks, nothing to see here
            <div id='detailContent'>
            </div>
            <button id='closeChildy'>
                Close Childy Window</button>
            <button id='openChildy'>
                Open Childy Window</button>
            <div id='childSees'>
                me empty</div>
        </div>
    </div>
</body>

子页面标记:这称为“TestCallBack.html”

<body>
    <div class='pagetop'>
        Test Callback Child
    </div>
    <div class='pageDetailContainer'>
        <div class='pageDetail'>
            <div id="achildy">
                HereIBe
                <div id="inchildy">
                    I am childy text
                </div>
            </div>
            <button id='pleaseKillMe'>
                Have Parent Close Me</button>
            <div id='textHolder'>
            </div>
            <div id='callbackTextHold'>
            </div>
        </div>
    </div>
    Howdy
</body>

主页面脚本:

function logNewWindow(newWindow, JQnewWindowDoc) {
    var mychildText = JQnewWindowDoc.text(); //all the child doc text
    var innerChildText = $("#inchildy", JQnewWindowDoc).text(); // one element text
    var gotback = newWindow.childCallBack("CHILD TEXT:" + mychildText + " INNER:" + innerChildText);
    $('#callbackTextHold').text("GOT:" + gotback); //child sent me this text from childCallBack
};

var AWindow;
function openChild() {
    AWindow = window.open("TestCallBack.html");
};
$(document).ready(function() {
    $('#detailContent').text('Loaded JQ');
    $('#closeChildy').click(function() {
        AWindow.close();
    });
    $('#openChildy').click(function(e) {
        openChild();
        e.stopImmediatePropagation();
    });
});

子页面脚本:

var ct;
function childCallBack(passstuff) {
    $('#textHolder').html('ct:"' + ct + '"<br /> CHILD GOT:(' + passstuff + ")");
    return ct;
};

$(document).ready(function() {
    ct = $("#achildy").text();
    window.opener.logNewWindow(window, $(document));

    $('#childSees', window.opener.document).text('You been Had by child');

    $('#pleaseKillMe').click(function() {
        $('#closeChildy', window.opener.document).click();
    });
});
于 2012-08-08T14:10:33.097 回答
0

最好的可能是在服务器端进行。

在 index.html(应该是 index.php)中,您执行以下操作:

<body>
    <div id="target">
         <?php include 'user.php';
    ?></div>
</body>

在 login.html 中,表单应该这样设置:

<form id="test" action="index.php" method="post">

请注意,不需要 js 或 jQuery。

于 2012-08-08T14:04:40.100 回答
0

用户.php

<?php 
    session_start();
    if($_POST && $_POST['user']):
      if(!isset($_SESSION['user'])):
        $_SESSION['user'] = $_POST['user'];
        echo $_SESSION['user'];
      endif;
    elseif(isset($_SESSION['user'])):
      echo $_SESSION['user'];
    else:
      echo 'How did you get to this page?';
    endif;
?>

按预期加载文件。如果有表单数据发布到文件,您将返回它。如果没有表单数据,但表单之前已提交,会话将捕获该数据并输出用户名。如果他们从不提交表单,但还是请求了该页面,他们会得到“您是如何到达此页面的”?

于 2012-08-08T14:05:44.580 回答