0
//Javascript
function updateStudentAttendance(event)
  {
    if ($(this).hasClass('here')) {
  $(this).removeClass('here');
  $(this).addClass('absent');
  var schoolId = $(this).children('p').attr('id');
  var studentId = $(this).attr('id');
  var classId = document.getElementById("classId").value;
  postAttendance(studentId, schoolId, classId, 'Absent');
}

function postAttendance(studentId, schoolId, classId, attendanceEvent)
{
  $.post('post_attendance.php', {
  'studentId': studentId,
  'schoolId': schoolId,
  'event': attendanceEvent,
  'classId': classId
}, function(data) {
 // alert(data);
});
}

//php code looks like this:
<?php
    print sprintf('<div id="%s" class="student span2 well well-small %s">
        <input type="hidden" id="classId" name ="classId" value="%s">'
        , $student->getId(), $class, $classId);
    print '<img src="img/userp.png" style="width: 100%; text-align: center;">';
    print sprintf('<p id="%s" style="text-align: center; font-size: 12px;">%s %s'
        , $_GET['schoolId'], $student->getFirstName, $student->getLastSurname());               
    print '</p>';
    print '</div>';
?>

这就是我使用的代码,它从 id 中提取信息,我必须添加一个隐藏元素来获取 classId。然后我在修改后将其发布回来,以使用新信息更新数据库。我觉得这是一种非常奇怪的方法,并且希望有一个更好的解决方案来传递这些变量。

请让我知道一个更好的方法来做到这一点。谢谢!

4

4 回答 4

2

到 PHP

使用 jquery ajax 或使用表单发布

到 JS

使用带有 json 编码值的隐藏输入字段(如果数据结构复杂)

于 2013-03-08T16:05:25.007 回答
0

您可以使用隐藏的输入字段,从而存储编码的 json。

$data = array(
    "key1" => "value1",
    "key2" => "value2"
);
$input = "<input type=\"hidden\" id=\"storage\" value=\"%s\" />";
printf($input, htmlspecialchars(json_encode($data)));

在 jQuery 上

var storage = $.parseJSON($("#storage").val());

另一种方法是使用data属性,这些属性可以使用$("#element").data().

做一些很酷的改变:

storage["key1"] = "value3";

回到 PHP:

$.post("url.php", storage, function(){
   alert("Alright, bro");
})
于 2013-03-08T16:15:29.347 回答
0

我认为您可以使用两种结构。

一种是HTML5dataset,它允许您为 Web 应用程序存储不属于标记语义的自定义私有数据。这比使用更灵活,id因为您只能拥有一个id并且它还有其他用途。你可以有多个classes,但这也很难使用。

第二个是hidden属性,它声明一个元素与页面的当前状态无关/供用户使用。我有时会使用此属性来创建组织与页面标记无关的应用程序数据的元素(我希望这是一个正确的用法,但我并不肯定)。

于 2013-03-08T16:09:04.867 回答
0

在您的 jQuery $.post添加一些 json 数据类型:

jQuery

 $.post('post_attendance.php', {data:value},
    dataType:"json"
}, function(data) {
   alert(data.error); //will be false
});

post_attendance.php用 json_encode 回显你的结果:

$array = array('response'=>'Some value', error => false);
echo json_encode($array);
于 2013-03-08T16:10:05.703 回答