将javascript变量传递给php而不刷新页面

时间:2014-01-16 03:17:13

标签: javascript php jquery

我有一个5x5网格的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?

2 个答案:

答案 0 :(得分:1)

尝试从此更改urldata

url: 'index.php',
data: { box : 'box' }

到此:

url: 'sessions.php',
data: { box : box }

答案 1 :(得分:0)

鉴于你正在这样做......

box = $(this).attr('title');

我假设您要将该变量传递给服务器。但是,您只是传递文字字符串"box",而不是变量box

在你的代码中,你写了这个......

data: { box : 'box' },

需要这样,传递box中的值:

data: { box : box },

顺便说一下,你已经创建了一个全局变量box。您应该使用box = $(this).attr('title');来创建函数的本地变量,而不是var box = $(this).attr('title');