2013-12-01 4 views
0

Я пытаюсь передать переменную javascript, которую я получаю, когда кнопка нажата на php, а затем запустите запрос mysql. Мой код:Как передать переменную javascript в php с помощью ajax

function ajaxCall(nodeID) { 
$.ajax({ 
type: "POST", 
url: "tree.php", 
data: {activeNodeID : nodeID}, 
success: function(data) { 
alert("Success!"); 
    } 
} 
); 
} 

function onButtonClick(e, data) { 
switch (data.name) { 
    case "add": 
    break; 
    case "edit": 
    break; 
    case "delete": 
    nodeid = data.context.id; 
    ajaxCall(nodeid); 
    //query 
    break;         
    } 
} 


<?php 
     if (isset($_POST['activeNodeID'])) { 
     $nodeid = $_POST['activeNodeID']; 
     } 
     else { 
     $nodeid = 0; 
     } 
     ?> 

Я этого не делал раньше, поэтому не знаю, почему это не работает. Какие-либо предложения? EDIT: Возможно, я недостаточно объяснил себя. Я понимаю, что php - это серверная сторона, а javascript - клиентская. У меня есть диаграмма org, которая отображается с использованием javascript на основе всей информации, сохраненной в моем db. Мне нужно сделать следующее: при нажатии одной из кнопок javascript (редактировать, удалять, добавлять) получить идентификатор активного узла и использовать его как переменную в php для запуска запроса. Например, удалите строку в db. Каков наилучший способ сделать это?

+0

Это ваш PHP или он находится в файле tree.php? – putvande

+1

Код PHP выполняется при загрузке страницы, содержащей код JavaScript, а не при выполнении Ajax-вызова (если это было вашим намерением). Посмотрите на * сгенерированный код JS. Вы увидите, что содержимое обратного вызова 'success' пуст. Пожалуйста, объясните, чего вы пытаетесь достичь, чтобы мы могли помочь вам лучше. –

ответ

3

Здесь немного путаницы, значение success хранит обратный вызов, который вызывается при успешном вызове Ajax. Чтобы дать вам простой пример, скажем, у вас есть вызов Ajax, как это:

function ajaxCall(nodeID) { 
    $.ajax({ 
     type: "POST", 
     url: "tree.php", 
     data: {activeNodeID : nodeID}, 
     success: function(data) { 
     console.log(data.my_message); 
     } 
    }); 

Это вызывает PHP страницу с именем tree.php. На этой странице вы выполните некоторые вычисления, а затем вернете значение, в данном случае в виде JSON. Таким образом, страница выглядит следующим образом (обратите внимание, что я держу это просто, вы должны проверять входные значения, всегда):

$v = $_REQUEST['activeNodeID']; 
$to_return = "the value sent is: " . $v; 
return json_encode(array('my_message' => $to_return)); 

Этой простой PHP страница возвращает эту строку как JSON. В вашем javascript в указанном обратном вызове (то есть success) вы получаете data как объект, содержащий значение $to_return PHP. То, что вы написали, на самом деле не имеет смысла, поскольку PHP является языком сервера и не может быть обработан из браузера, такого как JavaScript.

+0

Хороший ответ, но вы действительно должны правильно использовать предложения, а не разделить все на ','. Это облегчает чтение текста. Я отредактировал его. –

+0

Вы правы Феликс, спасибо за исправления, я просто переключился на американскую раскладку клавиатуры, и мне очень трудно привыкнуть к ней, еще раз спасибо. –

+0

: D Изменения структуры клавиатуры жесткие :) –

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