Angularjs 将空的 JSON 发送到服务器(仅在 IE 9 及更高版本中)


Angularjs send empty JSON to server (ONLY in IE 9 and greater)

我的angularjs脚本有一点问题。我正在尝试将数据发布到服务器(将值保存到数据库的 PHP 脚本)。它在Chrome,Mozilla,Opera和彼此中正常工作,但在IE中完全不行。我尝试了IE9,10和11(都没有附加组件),但仍然无法弄清楚。在IE中,我的angularjs只发布空的JSON(类似于{})。

这是我的 angularjs POST 脚本。

$scope.submitForm = function() {
            // Posting data to php file
            $http({
                method  : 'POST',
                url     : 'ajax/newInvoice.php',
                data    : $scope.invoice, //forms user object
                headers : {'Content-Type': 'application/x-www-form-urlencoded'}                 
            })
                .success(function(data) {
                    getInvoices();
                    $scope.invoice = {items: [{qty: 1,description: '',cost: 0,taxPerc: 21}],odberatel: '',konecny_prijemce: '',datum_objednavky: new Date(),datum_vystaveni: new Date(),datum_splatnosti: new Date(),datum_zdanitelneho_plneni: new Date(),zpusob_uhrady: 'Platba kartou',dodaci_metoda: 'Osobní odběr'};           
                });
        };

这是PHP。

<?php
require_once '../includes/db.php'; // The mysql database connection script
$created = date("Y-m-d H:i:s", strtotime("now"));
$query = "SELECT id FROM ang_faktury ORDER BY id DESC";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$row = $result->fetch_assoc();
$last_invoice_id = intval($row["id"]);
$year = date("Y");
$month = date("m");
$idString = str_pad(($last_invoice_id + 1), 5, '0', STR_PAD_LEFT);//id faktury ang_faktury[id], ang_faktury_polozky[id_faktury]
$faCislo = 'OB/'.$year.'/'.$month.'/'.$idString; //cislo faktury ang_faktury[cislo_faktury]
$_POST = json_decode(file_get_contents('php://input'), true);
$dzp = $_POST['datum_zdanitelneho_plneni'];
$datum_zdanitelneho_plneni = substr($dzp, 0, 10);   
$dzpForm = date("d.m.Y", strtotime($datum_zdanitelneho_plneni));
$do = $_POST['datum_objednavky'];
$datum_objednavky = substr($do, 0, 10); 
$doForm = date("d.m.Y", strtotime($datum_objednavky));
$dv = $_POST['datum_vystaveni'];
$datum_vystaveni = substr($dv, 0, 10);  
$dvForm = date("d.m.Y", strtotime($datum_vystaveni));
$ds = $_POST['datum_splatnosti'];
$datum_splatnosti = substr($ds, 0, 10);
$dsForm = date("d.m.Y", strtotime($datum_splatnosti));
foreach($_POST['items'] as $item){      
    $sumPriceTotal += $item['priceTotal'];
    $query2="insert into ang_faktury_polozky (id_faktury,name,cena,ks,dph_proc,dph,total) values('$idString','$item[description]','$item[mjPrice]','$item[qty]','$item[taxPerc]','$item[taxSum]','$item[priceTotal]')";
    $mysqli->query($query2);
}
$spt = "{$sumPriceTotal}";
$cbd = (($spt*100)/121);
$dph = $spt - $cbd;
$query3="insert into ang_faktury (id,created_at,cislo_faktury,datum_zdanitelneho_plneni,odberatel,konecny_prijemce,zpusob_uhrady,dodaci_metoda,cislo_objednavky,datum_objednavky,datum_vystaveni,datum_splatnosti,cena_bez_dph,dph,celkem_k_uhrade) values('$idString','$created','$faCislo','$dzpForm','$_POST[odberatel]','$_POST[konecny_prijemce]','$_POST[zpusob_uhrady]','$_POST[dodaci_metoda]','$faCislo','$doForm','$dvForm','$dsForm','$cbd','$dph','$spt')";
$mysqli->query($query3);
mysqli_close($mysqli);
?>

感谢您的任何建议。

在发送console.log(data)之前检查您的数据,并在收到print_r($_POST)后检查您的数据(在myFile.php中)

来自控制台 (newInvoice.php):

Array
(
    [items] => Array
        (
            [0] => Array
                (
                    [qty] => 1
                    [description] => MIKI_01
                    [cost] => 10
                    [taxPerc] => 21
                    [priceTotal] => 10.00
                    [taxSum] => 1.74
                    [mjPrice] => 8.26
                )
            [1] => Array
                (
                    [qty] => 1
                    [description] => MIKI_02
                    [cost] => 20
                    [taxPerc] => 21
                    [priceTotal] => 20.00
                    [taxSum] => 3.47
                    [mjPrice] => 16.53
                )
        )
    [odberatel] => MIKI
    [konecny_prijemce] => 
    [datum_objednavky] => 2016-01-16T13:39:32.554Z
    [datum_vystaveni] => 2016-01-16T13:39:32.554Z
    [datum_splatnosti] => 2016-01-16T13:39:32.554Z
    [datum_zdanitelneho_plneni] => 2016-01-16T13:39:32.554Z
    [zpusob_uhrady] => Platba kartou
    [dodaci_metoda] => Osobní odběr
)

控制台(应用.js)

Object {items: Array[2], odberatel: "MIKI", konecny_prijemce: "", datum_objednavky: Sat Jan 16 2016 14:45:18 GMT+0100 (Central Europe Standard Time), datum_vystaveni: Sat Jan 16 2016 14:45:18 GMT+0100 (Central Europe Standard Time)…}
datum_objednavky: Sat Jan 16 2016 14:45:18 GMT+0100 (Central Europe Standard Time)
datum_splatnosti: Sat Jan 16 2016 14:45:18 GMT+0100 (Central Europe Standard Time)
datum_vystaveni: Sat Jan 16 2016 14:45:18 GMT+0100 (Central Europe Standard Time)
datum_zdanitelneho_plneni: Sat Jan 16 2016 14:45:18 GMT+0100 (Central Europe Standard Time)
dodaci_metoda: "Osobní odběr"
items: Array[2]
0: Object
$$hashKey: "object:4"
cost: 10
description: "MIKI_01"
mjPrice: "8.26"
priceTotal: "10.00"
qty: 1
taxPerc: 21
taxSum: "1.74"
__proto__: Object
1: Object
$$hashKey: "object:69"
cost: 20
description: "MIKI_02"
mjPrice: "16.53"
priceTotal: "20.00"
qty: 1
taxPerc: 21
taxSum: "3.47"
__proto__: Object
length: 2
__proto__: Array[0]
konecny_prijemce: ""
odberatel: "MIKI"
zpusob_uhrady: "Platba kartou"
__proto__: Object