index.php文件未收到由骨干邮政发送的JSON [英] index.php is not receiving the JSON sent by the backbone Post

查看:73
本文介绍了index.php文件未收到由骨干邮政发送的JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在试图理解骨干是如何工作的,并与后端code通信,而我不能够接受我发送给我的PHP文件的JSON的一个问题。

I've been trying to understand how Backbone works and communicates with the back-end code, and I have an issue of not being able to receive the JSON I send to my php file.

下面是code:
HTML:

Here is the code: HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href='http://fonts.googleapis.com/css?family=Abel' rel='stylesheet' type='text/css' />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Understanding Backbone</title>
<style type="text/css">
body { padding: 0; margin: 0; background-color: #fff; }

h2 { font-family: Abel, sans-serif; margin: 0; padding: 0 0 5px 0;}
input { background-color: #ddd; border: 0; }
input:active { background-color: #bbb; }

#new-status { margin: 20px; padding: 20px; background-color: #67A9C3; }
#statuses { margin: 20px; padding: 20px; background-color: #92B456; }

</style>
</head>

<body>

<div id="new-status">
<h2>New monolog</h2>
<form>
    <textarea id="status" name="status"></textarea>
    <br />
    <input type="submit" value="Post" />
</form>
</div>

<div id="statuses">
    <h2>Monologs</h2>
    <ul></ul>
</div>
<script src="js/jquery-min.js"></script>
<script src="js/underscore.js"></script>
<script src="js/backbone.js"></script>
<script src="js/main.js"></script>
</body>
</html>

JS:

var Status = Backbone.Model.extend({
    url: 'api/index.php'
});

var Statuses = Backbone.Collection.extend({
    model: Status
});

var NewStatusView = Backbone.View.extend({
    events: {
        "submit form": "addStatus"
    },

    initialize: function(options) {
        this.collection.on("add", this.clearInput, this);
    },

    addStatus: function(e) {
        e.preventDefault();

        this.collection.create({ text: this.$('textarea').val() });
    },

    clearInput: function() {
        this.$('textarea').val('');
    }
});

var StatusesView = Backbone.View.extend({
    initialize: function(options) {
        this.collection.on("add", this.appendStatus, this);
    },

    appendStatus: function(status) {
        this.$('ul').append('<li>' + status.escape("text") + '</li>');
    }
});

$(document).ready(function() {
    var statuses = new Statuses();
    new NewStatusView({ el: $('#new-status'), collection: statuses });
    new StatusesView({ el: $('#statuses'), collection: statuses });
});

的index.php:

index.php:

<?php

echo(var_dump($_POST));

?>

这是我所得到的回应:

阵列(0){
}

array(0) { }

我已经打破我的头了这一点,所以请大家帮忙!

I've been breaking my head over this, so please HELP!

推荐答案

在计算器一些调查研究(真棒社区BTW),我能够发现主干不发直邮寄或获取到的RESTful API,或任何后code-背后可能,而是它是一个套头。所以,你必须拨开周围的$ _ SERVER全球,并找出所请求是什么。你可以找到在$ _ SERVER [REQUEST_METHOD]你的要求,不是执行一个开关/箱决定你想要这一要求做什么。这些数据正通过发送(骨干的情况下,始终是一个JSON字符串)是在HTTP正文中,并把它弄出来我用的file_get_contents('PHP://输入')和德code中的JSON使PHP可以使用它。

After some more research on stackoverflow(awesome community btw) I was able to find that backbone does not send straight post or get to the RESTful api, or whatever the code-behind might be, but instead it is a set of headers. So you have to poke around the $_SERVER global and find out what is being requested. You'll be able to find your request in the $_SERVER["REQUEST_METHOD"], than perform a switch/case to decide what you want to do with that request. The data being sent through (in backbone's case is always a JSON string) is in the HTTP body and to get it out I used the file_get_contents('php://input'), and decode the JSON so that php can work with it.

<?php 
$requestMethod = $_SERVER["REQUEST_METHOD"];     
switch ($requestMethod) 
{ 
case 'POST': $data = json_decode(file_get_contents('php://input'), true); 
echo $data; 
break; 
} 
?>

@orangewarp,我真的想了解发生了什么引擎盖下发生,而无需使用REST风格的PHP框架。

@orangewarp, I really wanted to understand what was happening under the hood without using a RESTful php framework.

这篇关于index.php文件未收到由骨干邮政发送的JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆