dsznndq4912405 2013-08-24 00:14
浏览 33
已采纳

如何在表单提交时同时将数据传递给backbonejs和php?

For example: A user enters or submits names. These names are stored locally using backbone.localStorage.js and displayed in #sidebar using backbone.js. And, by using php, the most recently added name should be displayed in #content. So, if user enters these two names, one after another- foo and bar. Then in #sidebar(here the backbone does the job)

foo
bar

should be displayed and in #content (here php does the job) bar should be displayed (as it is most recently added). when third name, boo is entered, in #sidebar it will be

foo
bar 
boo

And in #content boo will be displayed.

To achieve this I am using: backbone.js, backbone.localStorage.js, jquery. And app.js contains model, collection and view for handling and displaying data.

The js part works fine but not the php.

The 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>

event in app.js (view)

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

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

with the above code, data is passed to js, but not to php. Which means names are displayed in #sidebar as shown in above example but the php part is not working. #content is remained blank. I have also tried

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

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

but same thing happens.

So, how can I pass data to php too and display the recently added name in #content

展开全部

  • 写回答

1条回答 默认 最新

  • dounai9294 2013-08-24 22:36
    关注

    this.input.val('') will clear the form before it's sent to PHP. Try this:

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

    When the page is reloaded (after the form is submitted) the input should be cleared, so this code shouldn't be necessary anyway.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥66 android运行时native和graphics内存详细信息获取
  • ¥100 求一个c#通过CH341读取数据的Demo,能够读取指定地址值的功能
  • ¥15 rk3566 Android11 USB摄像头 微信
  • ¥15 torch框架下的强化学习DQN训练奖励值浮动过低,希望指导如何调整
  • ¥35 西门子博图v16安装密钥提示CryptAcquireContext MS_DEF_PROV Error of containger opening
  • ¥15 mes系统扫码追溯功能
  • ¥40 selenium访问信用中国
  • ¥20 在搭建fabric网络过程中遇到“无法使用新的生命周期”的报错
  • ¥15 Python中关于代码运行报错的问题
  • ¥500 python 的API,有酬谢
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部