【问题标题】:update div value - JQuery Toastmessage-plugin更新 div 值 - JQuery Toastmessage-plugin
【发布时间】:2012-06-24 16:17:34
【问题描述】:

我有一个 php 页面,它会重定向(如果成功)到另一个 php 页面,如下所示:

header('Location: completed.php?message=Successful operation. Data inserted for user: ' . $login->get_username() . ' . See home page for infos.');

现在在 completed.php 我有一个 div 来回显收到的消息:

<div id="msg">
<?php echo $_GET['message']; ?>
</div>

我正在使用“Toastmessage-plugin”:here..,但我无法在 Toastmessage 的文本中显示 $_GET .. 我正在使用此代码:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script src="js/jquery.toastmessage.js" type="text/javascript"></script>
<link href="styles/jquery.toastmessage.css" rel="stylesheet" type="text/css" />

...

<script type="text/javascript">
function showStickyNoticeToast() {
        $().toastmessage('showToast', {
            text: $('#msg').val(),
            sticky: true,
            position: 'bottom-left',
            type: 'notice',
            closeText: '',
            close: function () { console.log("toast is closed ..."); }
        });
    }
</script>

我搜索了很多,也搜索了 DOM 事件和其他事件,但我不知道采取什么步骤......也许当 JQ 函数加载时 div 'msg' 尚未收到 GET 数据...... ?那么我如何更新他的价值呢?

我读过的页面: thisthis。 我也尝试过使用 ajax,但我对该语言的经验较少..

请帮助... :) 谢谢

编辑@charlietfl

Ajax:我已经做了很多尝试......我再也找不到代码了! 基本上我用这段代码调用一个php文件(把它当作伪代码):

<script type="text/javascript>
<!--
$('#choose').change(function(event) {
    $.get('messages.php', { selected: $('#msg').val() },
        function(data) {
            $('#update').html(data);   // other div wher store data
        }
    );            
}); 
</script>

....

<?php

$alfa = isset($_GET['message']) ? $_GET['message'] : 'nothing';
echo $alfa;
?>

【问题讨论】:

  • 显示 ajax 代码以及如何使用它调用消息
  • 如果您只是简单地输出 GET[message],则消息必须存在,除非您在 php 代码中篡改 $_GET...
  • charlietfl ...看看我的编辑..

标签: php jquery


【解决方案1】:

尝试使用urlencode() 传递消息,例如:

$msg = "Successful operation etc. etc.";
header("Location: completed.php?message="+urlencode($msg));

【讨论】:

  • @lollo 好的,请记住,任何作为 GET 参数的复杂字符串都应该以这种方式传递(特别是如果它包含与 & 等特殊字符)
  • @lollo 可能有错误,请查看我的其他答案。总的来说,我不知道给出另一个答案是否符合政策(我觉得这样做是正确的,因为它完全不相关)。
  • @lollo 不客气 :) 如果您觉得我的回答是正确且最令人满意的,请点赞并接受其他答案,谢谢 :)
【解决方案2】:

知道了:您使用了$("#msg").val(),但DIV 标签没有“值”。

使用$("#msg").text()(用于纯文本)

$("#msg").html()

还要在代码中包含一些 HTML(很确定您需要第一个选项)。

仅将.val()&lt;input&gt; 等“有价值”标签一起使用(也可与&lt;textarea&gt; 一起使用)。

另请参阅:http://api.jquery.com/val/

【讨论】:

  • 是的......这是正确的解决方案......使用 $("#msg").val() 不起作用。我已经用 $("#msg").text().. 对其进行了更改。现在可以正常工作了...谢谢大家..再见!
【解决方案3】:

您的问题可能是您尝试在 ajax 完成之前调用消息插件,因为 ajax 中的第一个“A”代表异步。

为了留出 ajax 完成所需的时间,您需要在 ajax 的成功回调中调用您的消息插件。

message 参数添加到函数

function showStickyNoticeToast( message ) {
        $().toastmessage('showToast', {
            text: message,
            sticky: true,
            position: 'bottom-left',
            type: 'notice',
            closeText: '',
            close: function () { console.log("toast is closed ..."); }
        });
    }



$.post( url , dataToserver, function(data){         
      showStickyNoticeToast( $(data).text())
      $('#update').html(data); 

})

【讨论】:

  • 这不是问题,错误出现在“val()”中,顺便提一下,ajax 只是作为替代方案,而不是实际的实现。
  • 我意识到 val 不正确,但这种情况下的缺陷在哪里?
  • 原始帖子没有提到 Ajax(只有一次,但作为另一种不同实现的替代)。主要错误是 OP 没有正确检索值,而不是他使用或滥用 Ajax(根本没有显示)。所以我觉得这个答案,虽然在语法和程序上是正确的(我读过你的其他帖子,知道你非常聪明和专家)是不合适的。现在经过大量编辑,我们在 OP 中还有一个 AJAX 部分...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
相关资源
最近更新 更多