2016-11-26 2 views
1

Я реализовал ту же настройку в другом месте на своем сайте и не могу понять, почему она не работает на этот раз.Php не получает сообщение от JavaScript

Когда пользователь нажимает кнопку «Принять», он вызывает функцию JavaScript acceptOrder (orderID), которая передает идентификатор orderID на php-страницу, чтобы обновить запись в db.

orderID присвоен ok в JavaScript, но он не доходит до php. Var_dump в POST ничего не показывает, равно $ _POST ('orderID'). Я даже попробовал просто отправить целое число на php в случае возникновения проблемы с var, но это не имело никакого значения.

Js

function acceptOrder(orderID) { 
var orderID=orderID; 
console.log("assigned: "+orderID); 
var xmlhttp; 

// code for IE7+, Firefox, Chrome, Opera, Safari 
if (window.XMLHttpRequest) 
{ 
    xmlhttp=new XMLHttpRequest(); 
} 
// code for IE6, IE5 
else 
{ 
    xmlhttp=new ActiveXObject("Microsoft. } 

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     console.log (xmlhttp.responseText); 
    } 
} 
xmlhttp.open("POST","acceptorder.php",true); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-rule encoded"); 
xmlhttp.send(orderID); 
console.log(orderID+" sent"); 
//location.reload(); 
//console.log("reload"); 
} 

Php

<?php 
require_once("config1412/class.shop.php"); 
session_start(); 
$shop = new SHOP(); 

echo var_dump($_POST); 
//$orderID = $_POST['orderID']; 
//echo "orderId var = ".$orderID."<br/>post ".$_POST['orderID']; 

//$shop->acceptOrder($orderID); 
?> 

Само собой разумеется, я искал около и не видят каких-либо решений в других местах.

Большое спасибо

+0

Вы получили ошибку? –

+0

Я опубликовал это с мобильных и удаленных частей js вокруг Microsoft, так что игнорировать этот бит. – Paul

+0

@HappyCoding ошибок нет – Paul

ответ

0

Как я могу видеть, вы не установили имя переменной для OrderId, изменение строки кода:

xmlhttp.send(orderID); 

к:

xmlhttp.send("orderID="+orderID); 

Если это только SQL ошибка отсутствует OrderId, и все остальные пассивы в порядке, это решение для вас. Как вы сказали в комментариях: «Я просто получаю sql-ошибку, потому что переменная orderID пуста». Вам не хватает только имени для отправки сообщений, поэтому он пуст.

+0

Я думаю, что вы правы. Вероятно, я ошибаюсь. Я попробую это, когда вернусь домой. Большое спасибо – Paul

+0

Добро пожаловать. – Ultrazz008

+0

только что проверил, это сработало !! Большое спасибо!! – Paul

0

Пожалуйста, замените эту строку

xmlhttp=new ActiveXObject("Microsoft. } 

с следуя линии

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
+0

Да, я знаю, это были опечатки при копировании/вставке с помощью мобильного телефона. В исходном коде все в порядке. – Paul

0

Вы должны написать это в ваших JS

function acceptOrder(orderID) { 
var orderID=orderID; 
console.log("assigned: "+orderID); 
var xmlhttp; 

// code for IE7+, Firefox, Chrome, Opera, Safari 
if (window.XMLHttpRequest) 
{ 
    xmlhttp=new XMLHttpRequest(); 
} 
// code for IE6, IE5 
else 
{ 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     console.log (xmlhttp.responseText); 
    } 
} 
xmlhttp.open("POST","acceptorder.php",true); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-rule encoded"); 
xmlhttp.send(orderID); 
console.log(orderID+" sent"); 
//location.reload(); 
//console.log("reload"); 
} 
+0

Да, я знаю, это были опечатки при копировании/вклеивании через мобильный телефон. В исходном коде все в порядке. – Paul

+0

что вы получаете в консоли – Shibon

+0

@Shibon Я просто получаю sql-ошибку, потому что переменная orderID пуста – Paul

0

Я рекомендовал бы у ou использовать jQuery для вызовов ajax. Гораздо проще настроить и просто. Особенно, и особенно потому, что это очень простая настройка для новичка. И для людей, которые хотят установить ajax простым способом. Я использую его каждый раз, когда хочу сделать ajax в своем коде. Вот ссылка:

http://api.jquery.com/jquery.ajax/ 

Просто поместите тег, чтобы включить JQuery, а затем одну команду Javascript для вызова Ajax.

Смежные вопросы