例如:用户输入或提交姓名。这些名称使用backbone.localStorage.js在本地存储,并使用backbone.js显示在#sidebar中。并且,通过使用php,最近添加的名称应显示在#content中。所以,如果用户输入这两个名字,一个接一个 - foo和bar。然后在#sidebar(这里主干完成工作)
foo
bar
应该显示在#content(这里是php完成工作)bar
应该显示(因为它是最近添加的)。当输入第三个名称boo
时,在#sidebar中它将是
foo
bar
boo
将显示#content boo
。
为了达到这个目的,我使用的是: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
中显示最近添加的名称答案 0 :(得分: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('')
}
重新加载页面时(提交表单后)应清除输入,因此无论如何都不需要此代码。