0

例如:用户输入或提交姓名。这些名称使用backbone.localStorage.js 存储在本地,并使用backbone.js 显示在#sidebar 中。而且,通过使用 php,最近添加的名称应显示在#content 中。因此,如果用户输入这两个名称,一个接一个 - foo 和 bar。然后在#sidebar(这里是主干完成工作)

foo
bar

应该显示并在#content 中(这里是 php 完成工作)bar应该显示(因为它是最近添加的)。当输入第三个名字时boo,在#sidebar 中将是

foo
bar 
boo

并在#contentboo中显示。

为此,我正在使用:backbone.js、 backbone.localStorage.js、jquery。app.js 包含用于处理和显示数据的模型、集合和视图。

js 部分工作正常,但不是 php。

index.php

<div id="myapp"> 
  <div class="enter-data"> 
   <form method="POST" action="index.php">     
    <input type="text" name="name" id="new-data" />       
    <input type="submit" value="Subscribe" name="submit" id="submit"/>
   </form>
  </div>
  <div class="sidebar-data">
    //here names are displayed which are stored locally using backbone
  </div>
</div>

<div class="content">
    <?php
       function main() {
        if(isset($_POST['name']) && !empty($_POST['name'])) {
           $data =$_POST['name'];   
           echo $data;  
          }
         }
       main();
      ?>
</div>

app.js 中的事件(视图)

    events: {
       "click #submit": "submitClick",
    },

    submitClick: function(e){    
         if (!this.input.val()) return;
         Todos.create({title: this.input.val()});
         this.input.val('');
        }

使用上面的代码,数据被传递给 js,而不是 php。 这意味着名称显示在#sidebar 中,如上例所示,但 php 部分不起作用。#content 保持空白。我也试过

  events: {
       "submit form": "submitForm",
    },

    submitForm: function(e){    
          if (!this.input.val()) return;
         Todos.create({title: this.input.val()});
         this.input.val('');
        }

但同样的事情也会发生。

那么,我怎样才能将数据也传递给 php 并在#content 中显示最近添加的名称

4

1 回答 1

1

this.input.val('')将在发送到 PHP 之前清除表单。尝试这个:

submitClick: function(e){    
    if (!this.input.val()) return;
    Todos.create({title: this.input.val()});
    // don't clear the form!
    // this.input.val('')
}

当页面重新加载(提交表单后)时,输入应该被清除,所以这段代码无论如何都不是必需的。

于 2013-08-25T06:36:17.197 回答