У меня возникла очень странная проблема с jQuery $ .post и php.php не получает jquery post variables (работает на одном mac, а не на другом)
Моя главная страница вызова следующей функции:
function sell(){
var table = document.getElementById('saleTab');
var count = table.getElementsByTagName('tr').length;
var listID = new Array();
var listPrice = new Array();
var listQTY = new Array();
count--;
var discount = document.getElementById('discountAmount').innerHTML;
while(count > 0){
var allRow = table.getElementsByTagName('tr');
var allColumn = allRow[count].getElementsByTagName('td');
listID[count-1] = allColumn[0].getElementsByTagName('input').item(0).value;
listPrice[count-1] = allColumn[2].getElementsByTagName('input').item(0).value;
listQTY[count-1] = allColumn[3].getElementsByTagName('input').item(0).value;
count--;
}
$.post('handler/addSales.php',
{id:listID, price:listPrice, qty:listQTY, discount:discount},
function (data){
//document.getElementById('searchResults').innerHTML = data;
//console.log(data);
});
location.reload();
}
Когда функция вызывается переменные правильно отправлены на страницу addSales.php. поджигатель консоль сообщает следующее после выхода при продаже теоретический один элемент:
discount
id[] itemname
price[] 5,50
qty[] 1
так что переменная после отсылаются, но файл PHP не получает их должным образом. вот PHP файл addSales.php:
<?php
require_once('../connection.php');
require_once('../functions.php');
if(!empty($_POST)){
$id = $_POST['id'];
$price = $_POST['price'];
$qty = $_POST['qty'];
$count = count($id);
$count--;
$discount = euroToDollar($_POST['discount']);
mysql_query("INSERT INTO sales (date, time, discount) values (CURRENT_DATE(), CURRENT_TIME(), '$discount')") or die(mysql_error());
$lastEntry = mysql_insert_id();
while($count >= 0){
$newPrice = euroToDollar($price[$count]);
mysql_query("INSERT INTO sales_item (salesID, itemID, qty, sellingPrice) VALUES ('$lastEntry', '$id[$count]', '$qty[$count]', '$newPrice')") or die(mysql_error());
$newQTY = fetchRecord('item', 'qty', $id[$count]) - $qty[$count];
//$newQTY = $newQTY - $qty[$count];
mysql_query("UPDATE item SET qty = '$newQTY' WHERE id = '$id[$count]'") or die(mysql_error());
$count--;
}
}
mysql_close();
>
Обратите внимание, что этот скрипт работает на Macbook Pro моего borther с MAMP установлен (PHP 5.4.10) и не работает на моем Macbook Pro !
только 2 отличия: версия для мам. Мой macbook имеет последнюю версию mamp (php 5.6.7). и факт, что я не могу включить xcache из настроек мама на моем mac (он останавливает/запускает сервер и возвращается к отключенному), в то время как он включен на ноутбуке моего брата. Это заставляет меня сходить с ума, так как я не вижу причины, по которой он не должен работать на моем mac.
Любая помощь приветствуется,
Это то, что мои состояния лог ошибок:
[07-May-2015 22:38:34 Европа/Берлин] PHP Warning: session_start(): Не удается отправить куки сессии - заголовки, уже отправленные (вывод запущен в /Applications/MAMP/htdocs/GESTIONALE_BIRRE/index.php:2) в /Applications/MAMP/htdocs/GESTIONALE_BIRRE/index.php в строке 3 [07-May-2015 22:38 : 34 Europe/Berlin] PHP Warning: session_start(): Не удается отправить ограничитель кеша сеанса - уже отправленные заголовки (вывод запущен в /Applications/MAMP/htdocs/GESTIONALE_BIRRE/index.php-2) в/Applications/MAMP/htdocs/GESTIONALE_BIRRE /index.php в строке 3
ОБНОВЛЕНИЕ Я поменял скрипты во всех файлах на mysqli и удалил все сеансы. функция продажи javascript осталась прежней, и это пороговое значение передало переменные через метод post должным образом. новый код addSales.php файла:
<?php
require('../connection.php');
require('../functions.php');
if($_POST){
$id = $_POST['id'];
$price = $_POST['price'];
$qty = $_POST['qty'];
$count = count($id);
$count--;
$discount = euroToDollar($_POST['discount']);
$mysqli->query("INSERT INTO sales (date, time, discount) values (CURRENT_DATE(), CURRENT_TIME(), '$discount')");
$lastEntry = mysql_insert_id();
while($count >= 0){
$newPrice = euroToDollar($price[$count]);
$mysqli->query("INSERT INTO sales_item (salesID, itemID, qty, sellingPrice) VALUES ('$lastEntry', '$id[$count]', '$qty[$count]', '$newPrice')");
$newQTY = fetchRecord('item', 'qty', $id[$count], $mysqli) - $qty[$count];
//$newQTY = $newQTY - $qty[$count];
$mysqli->query("UPDATE item SET qty = '$newQTY' WHERE id = '$id[$count]'");
$count--;
}
}
$mysqli->close();
?>
Теперь журнал ошибок не показывает никаких сообщений об ошибках, в отличие от ранее, но сценарий addSales все еще не работает.
Расширение 'mysql' устарело от PHP 5.5. Я бы предположил, что первое, что вы делаете, это заменить это использование 'mysqli' или' PDO' для доступа к базе данных. –
Кроме того, функция 'euroToDollar()' преобразует запятую десятичный разделитель с периодом, который может потребоваться на основе типа поля базы данных? –
Наконец, у вас абсолютно нет ошибок при обращении к базе данных. Вам необходимо добавить код для обработки неожиданного сбоя и зарегистрировать наши сообщения об ошибках. Это очень поможет вам в отладке кода. –