草庐IT

php - onclick 追加 textarea 到 div

coder 2024-05-11 原文

我目前在用户按下我网页上的按钮后有一个ajax调用..

问题是,在提交之后,有一个轻微的延迟(因为第二个 ajax 调用需要完成以显示 DIV)以避免轻微的延迟。我想知道是否可以将内容附加到分区:

    <textarea name='Status'> </textarea>
    <input type='hidden' name='UserID' value="<?=$_SESSION['UserID']; ?>">
    <input type='button' value='Status Update'>
  <script>
  $(function () {
    $('input').on('click', function () {
        var Status = $(this).val();
       $('#output').append(Status);
});
  </script>

以上是我目前的代码配置。现在,这不能按预期工作。它不会将提交的内容添加到 DIV 中。这是通过我的 ajax 调用显示它的方式:

window.setInterval(function()
{
  $(function () 
  {
    $.ajax({                                      
        url: 'Ajax/AjaxStatuses.php', data: "", dataType: 'json',  success: function(rows)        
        {
        $('#output').empty();
            for (var i in rows)
            {
                var row = rows[i];          
                var User = row[0];
                var Status = row[1]
                    $('#output').append(''+
                    '<div class="small-3 large-2 columns "><img src="http://placehold.it/80x80&text=[img]" /></div>'+
                    '<div class="small-9 large-10 columns">'+
                        '<p><strong><a href="#">'+User+'</a>:</strong>'+Status+'</p>'+
                        '<ul class="inline-list">'+
                            '<li><a href="">Reply</a></li>'+
                            '<li><a href="">Share</a></li>'+
                        '</ul><hr>');
            } 
        } 
    });       
  });
 }, 1000);

和调用:

 include "../PHP/Database.php";
    $Array = array();

        $Query = $DB->prepare("SELECT UserID, Text FROM statuses Order BY ID DESC");
        $Query->execute();
        $Query->bind_result($ID, $Text);
        $Query->store_result();
        while($Query->fetch()){
            $Second_Query = $DB->prepare("SELECT Username FROM users WHERE ID=?");
            $Second_Query->bind_param('i',$ID);
            $Second_Query->execute();
            $Second_Query->bind_result($Username);
            $Second_Query->fetch();
                $Array[] = array ($Username, $Text);
            $Second_Query->close();         
        }
        $Query->close();

如何在按下按钮后将文本区域附加到 HTML div,这样我的脚本就不必等待来自新发布状态的响应?


更新。提交按钮时,它会调用以下代码:

$(function () {
    $('input').on('click', function () {
        var Status = $(this).val();
        $.ajax({
            url: 'Ajax/StatusUpdate.php',
            data: {
                userid: $("input[name=UserID]").val(),
                text: $("textarea[name=Status]").val(),
                Status: Status
            },
            dataType : 'json'

        });
    });
});

处理ajax输入

最佳答案

苏菲。

首先,看看这个片段。

window.setInterval(function()
{
  $(function () 
  {
      ...   
  });
 }, 1000);

我猜这是 jQuery:) 这个构造

$(function() { somecode(); }); 

用于执行 somecode();当 DOM 达到“就绪”状态时。这意味着 - somecode() 只会在文档的“就绪”事件上执行一次,而这里的 setInterval 只是绑定(bind)该事件的函数执行。

你应该改用这个结构:

$(function () 
{
    window.setInterval(function()
    {

        somecode();

    }, 1000);
});

第二:

include "../PHP/Database.php";
 $Array = array();
        $Query = $DB->prepare("SELECT UserID, Text FROM statuses Order BY ID DESC");
        $Query->execute();
        $Query->bind_result($ID, $Text);
        $Query->store_result();
        while($Query->fetch()){
            $Second_Query = $DB->prepare("SELECT Username FROM users WHERE ID=?");
            $Second_Query->bind_param('i',$ID);
            $Second_Query->execute();
            $Second_Query->bind_result($Username);
            $Second_Query->fetch();
                $Array[] = array ($Username, $Text);
            $Second_Query->close();         
        }
        $Query->close();

实际上,这不会发送任何响应。如果这是所有代码,那么您应该添加

echo json_encode($Array); 

至少,得到任何回应。

第三:

$.ajax({  
    url: 'Ajax/AjaxStatuses.php', data: "", dataType: 'json', ....

dataType: 'json' 意味着,您应该从服务器发送一个有效的 JSON 字符串,否则 - “成功”函数将不会执行。

如果这没有帮助,您应该检查所有数据流以找到它们损坏的地方。在浏览器中使用开发人员控制台查看ajax请求中服务器的内容和来自服务器的内容以定位问题,然后您将能够轻松解决问题。

另外我有一些建议可以让你的代码更干净:

尝试为这样的事情制作更具体的选择器:

$('input').on('click', function () {

只需为相应的输入添加一个 id(或 class,如果你有很多按钮)属性,然后像这样:

$('#id').on('click', function () { ...

$('.class').on('click', function () { ...

另外)) 尝试提取如下内容:

<input type='hidden' name='UserID' value="<?=$_SESSION['UserID']; ?>">

超出 HTML 结构,如果这不在表单内部或您使用 ajax。我明白了,你在 js 中使用了 UserID,所以这里更好的解决方案是

<script type="text/javascript">
   var UserID = "<?=$_SESSION['UserID']; ?>";
</script>

请注意,这只是更好,但当然不是最优的。谷歌“将变量从 php 传递到 js”并选择最佳解决方案:)

最后一个: 尝试发出单个 SQL 请求以从数据库获取数据。例如:

"SELECT UserID, Text FROM statuses Order BY ID DESC" 

"SELECT Username FROM users WHERE ID=?" 

你可以替换为:

"SELECT statuses.UserID, statuses.Text, users.Username
FROM statuses 
INNER JOIN users ON users.ID = statuses.UserID
Order BY ID DESC" 

这将通过减少数据库请求量来提高性能。

关于php - onclick 追加 textarea 到 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16766046/

有关php - onclick 追加 textarea 到 div的更多相关文章

  1. ruby-on-rails - Nokogiri:使用 XPath 搜索 <div> - 2

    我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll

  2. ruby - 在哈希的键数组中追加元素 - 2

    查看我的Ruby代码:h=Hash.new([])h[0]=:word1h[1]=h[1]输出是:Hash={0=>:word1,1=>[:word2,:word3],2=>[:word2,:word3]}我希望有Hash={0=>:word1,1=>[:word2],2=>[:word3]}为什么要附加第二个哈希元素(数组)?如何将新数组元素附加到第三个哈希元素? 最佳答案 如果您提供单个值作为Hash.new的参数(例如Hash.new([]),完全相同的对象将用作每个缺失键的默认值。这就是您所拥有的,那是你不想要的。您可以改用

  3. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  4. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  5. ruby Mechanize : multiline value for textarea gets merged - 2

    编辑:经过进一步测试,问题似乎是站点特定的,理论上应该可以正常工作。本应位于多行的Textarea值正在一行中全部提交。textarea_values="value1\nvalue2"form=page.form_with(:id=>'form_id_here')form['my_textarea']=textarea_valuessubmit=form.button_with(:value=>'Submit')form.click_button(submit)提交的值是value1\nvalue2而不是预期的多行。有没有我可以尝试的另一种添加表单值的方法?

  6. ruby-on-rails - Ruby slim - 来自变量的 div 类 - 2

    我知道这篇文章在这里:RubySlim-Howdoyoudefineanelement'sclasswitharailshelperorvariable?我已经尝试了所有三种解决方案。不幸的是,对我来说,没有一个在工作。论坛.rb.panel.panel-heading.span=@forum.name.panel-body.row.col-md-7#{t('global.topic')}.col-md-3.value.title.col-md-1.value.topic.col-md-1.value.dateforum_feed.js.coffeewindow.ForumFeedUI

  7. ruby-on-rails - Rails 通过 div 包装有错误的字段 - 2

    当验证未通过时,如何停止Rails更改我的代码。每次rails用包裹我的字段...我可以编辑fields_with_error类.fields_with_error{display:inline}这行得通,但它是hacky 最佳答案 没关系。使用CSS而不是这样做。ActionView::Base.field_error_proc=Proc.newdo|html_tag,instance_tag|"#{html_tag}"end我觉得这更hacky:) 关于ruby-on-rails-R

  8. ruby-on-rails - 使用 Ruby on Rails 将类动态添加到 .erb 中的 div - 2

    我有这个div我想要的结果是有没有办法在我的erb中添加类(class)?我试过了但是当它呈现时,它不会逃逸到ruby​​代码中......和想法? 最佳答案 它与一起%>"> 关于ruby-on-rails-使用RubyonRails将类动态添加到.erb中的div,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3015986/

  9. ruby-on-rails - Rails 还是 Sinatra? PHP程序员入门学习哪个好? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?

  10. ruby - 数组分配与追加行为 - 2

    在我看来,以下行为就像assign方法正在按值处理visited,而append方法将其视为引用:classMyClassdefassign(visited)visited+=["A"]enddefappend(visited)visited[]instance.append(visited)visited#=>["A"]有人可以解释这种行为吗?这不是关于Ruby是否支持按引用传递或按值传递的问题,而是关于下面提供的示例,以及为什么两个据称执行相同操作的方法表现出不同行为的问题。 最佳答案 您在第一个方法中重新定义了局部变量。这是一

随机推荐