У меня есть 5×5 сетка div-боксов (25 из них), и я использую jQuery UI для регистрации, когда я бросаю элемент в нем. Он получит заголовок коробки, в которую он был удален, и имя элемента, эта часть работает.
Я хочу передать название и имя на PHP без обновления страницы (потому что тогда элементы будут сброшены). Я получаю «успех»! но похоже, что он не передает данные.
index.php
<script> $(function() { $( "li img" ).draggable({ snap: ".grid", start: function (event, ui ) { item = $(this).attr('title'); } }); $( "li .grid" ).droppable({ drop: function( event, ui ) { box = $(this).attr('title'); $.ajax({ type: "POST", url: 'index.php', data: { box : 'box' }, success: function(data){ alert("success!"); } }); } }); }); </script>
sessions.php
<?php session_start(); if(isset($_POST['box'])) { // store session data $_SESSION['box'] = $_POST['box']; } //retrieve session data echo $_SESSION[box]; ?>
Как передать заголовок и имя на PHP без обновления страницы?
Попробуйте изменить url
и ваши data
из этого:
url: 'index.php', data: { box : 'box' }
к этому:
url: 'sessions.php', data: { box : box }
Учитывая, что вы это делаете …
box = $(this).attr('title');
Я предполагаю, что вы хотите передать эту переменную на сервер. Однако вы просто передаете буквенную строку "box"
, а не поле переменной.
В вашем коде вы написали это …
data: { box : 'box' },
который должен быть таким, чтобы передать значение в box
:
data: { box : box },
В стороне вы создали глобальную переменную. Вместо box = $(this).attr('title');
, вы должны использовать var box = $(this).attr('title');
для создания переменной, связанной с функцией.