1

我想通过 jQuery 发布 div 的内容,重定向到 php 文件,然后在 php 文件上回显 div 内容。

html

<div id="edit_content">
<p>This is a test</p>    
</div>
<a href="processingscript.php" id="submit_script">Submit</a>

jQuery

$('#submit_script').click(function(){
$.post('/processingscript.php', {'html': $('#edit_content').html()};
});

php

$content = $_POST['html'];
echo $content;

到目前为止,我在 php 文件上得到了一个空白回显。我应该使用 $().redirect() 吗?

4

3 回答 3

1

好吧..我不完全确定您在这里要做什么。但这就是我所理解的——

您想在不同的 PHP 脚本上访问 div 的内容。您使用“ redirect ”一词,然后使用 jQuery AJAX 方法。最后,您还没有为 AJAX 调用定义回调,因此您永远不会看到来自 PHP 的回声。

尝试这样的事情 -

var htmlData = $('#edit_content').html();
$.post('/processingscript.php', {'html': htmlData },function(response){
  // response now contains anything echoed from processingscript.php 
});

您在函数中看到的匿名函数$.post()就是我前面提到的回调。这是一个在 AJAX 请求成功完成后立即调用的函数。传递给它的参数 ( response) 是processingscript.php脚本的输出。

因此,要将整个事情组合在一起,您的 jQuery 会向您的 PHP 脚本发送一个 AJAX 请求,然后该脚本可以随意操作和使用$_POST数据。一旦 PHP 完成它的业务,它可以回显状态消息。这可以是纯文本,只是一个“ Woo Hoo!脚本完成! ”,甚至是一个包含您想要传递回 JavaScript 的任何信息的对象(这将是一个 JSON 响应)。

于 2013-03-14T18:09:50.187 回答
1

这就是你想要的,我猜。经过测试,100% 对我有效

HTML:

<div id="edit_content">
    <p>This is a test paragraph</p><p> This is <u>another</u> <b>paragraph</b></p>    
</div>
<button id="submit_script">Submit</button>
<div style="border: 2px solid red; width: 200px; height: 100px;">
    <b>Result:</b>
    <div id="result"></div>
</div>

Javascript:

$(document).ready(function() {
    $("#submit_script").click(function() {
        var content = $('#edit_content').html();
            $.post("processing.php", { html: content})
            .done(function(data) {
            $('#result').empty().append(data)
            });
        });
});

这会将返回的 div 内容加载到新的 div 上。

于 2013-03-14T19:34:59.687 回答
0

你应该添加

return false;

在 jQuery click 事件处理程序中,否则它将导航到该页面。

$('#submit_script').click(function(){
    $.post('/processingscript.php', {'html': $('#edit_content').html()};
    return false;
});

请记住,您只能在浏览器 javascript 控制台中看到通过 AJAX 请求获得的页面中显示的内容。您插入的“回声”不会在您的页面上显示任何内容,除非您使用 jQuery 获得响应但脚本没有意义。

于 2013-03-14T18:04:37.257 回答