События Jquery от DatePicker - PullRequest
       0

События Jquery от DatePicker

0 голосов
/ 24 ноября 2010

Мои новейшие квесты были непростыми, чтобы заставить меня услышать ... Я не нашел здесь темы, чтобы найти правильный путь в моей ситуации.

У меня есть один встроенный сборщик дат.У меня оно есть, поэтому выбранная дата будет показана в 3 DIV.Один на день ("DD, d"), другой на месяц ("MM"), а затем на год ("yy").

    <script type="text/javascript">   
        $(document).ready(function () {
        $( "#datepicker" ).datepicker({
            onSelect: function(dateText, inst) { 
//formatDate Requires a new date object to work 
      var myDate = new Date(dateText); 
      var myDate2 = new Date(dateText);
      var myDate3 = new Date(dateText);
//Set a new var with different format to use 
      var newFormat = $.datepicker.formatDate("DD, d", myDate); 
      var newFormat2 = $.datepicker.formatDate("MM", myDate2);
      var newFormat3 = $.datepicker.formatDate("yy", myDate3);
//Choose the div you want to replace 
      $("#apDiv1").html(newFormat); 
      $("#apDiv5").html(newFormat2);
      $("#apDiv7").html(newFormat3);
    } 
  }); 
});
</script>

Кажется, я не могу его получитьчтобы при изменении даты в DIV были вызваны 2 события для публикации в другом DIV. Позвольте мне сосредоточиться только на DIV дня ("DD, d") .. (# apDive1).

Когда дата выбрана на датчике, дата будет отображаться в (# apDiv1) в формате «DD, d».поэтому, когда происходит это «изменение», оно отправляет эту дату в «daypower.php», чтобы отобразить итоговое значение этого дня в (# apDiv2) .... И то же самое изменение также отправит «daygraph.php» для возвратаданные в (# apDive4).

Все, что я сделал, потерпело неудачу ... Я вернулся только к средству выбора даты ... Вы можете взглянуть на страницу, чтобы визуально увидеть, кто япытаясь сделать .

Я попытался сначала загрузить дату на страницу, и этот dateText обеспечит правильное событие, но НЕТ результата.Я не уверен в это время, поэтому я вернулся на круги своя с чистого листа, который вы видите выше.

Спасибо,

Алан

Я вернулся кочень простая структура, которая должна получать результаты без каких-либо ошибок (насколько я понимаю).

    $(document).ready(function () {
      $('#datepicker').datepicker({onSelect: function(dateText) {
            var myDate = $(this).datepicker('getDate');
            $('#apDiv1').html($.datepicker.formatDate('DD, d', myDate));
            $('#apDiv5').html($.datepicker.formatDate('MM', myDate));
            $('#apDiv7').html($.datepicker.formatDate('yy', myDate));
            $.post('dayPower.php', {choice: dateText.val}, function(data) {
                $('#apDiv2').html(data).show();
            });
            $.load('dayGraph', {choice: dateText.val}, function(data) {
                  $('#apDiv4').html().show();
            });
            $.post('monthPower.php', {choice: dateText.val}, function(data) {
                $('#apDiv6').html(data).show();
            });
            $.load('monthGraph', {choice: dateText.val}, function(data) {
                  $('#apDiv9').html().show();
            });
            $.post('yearPower.php', {choice: dateText.val}, function(data) {
                $('#apDiv8').html(data).show();
            });
            $.load('yearGraph', {choice: dateText.val}, function(data) {
                  $('#apDiv10').html().show();
            });
      }});
});

Затем возникают проблемы с PHP, которые должны работать, но НЕТ ... Возьмите dayPower.php какпример ...

    <?
if(isset($_POST['choice']))
$choice = (isset($_POST['choice'])) ? date("Y-m-d",strtotime($_POST['choice'])) : date("Y-m-d");
$con = mysql_connect("localhost","inverters","XXXXXX"); 
if (!$con)  { 
die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("inverters", $con); 

$sql = 'SELECT date, sum(power/1000) AS power '        
.'FROM feed '       
.'WHERE date = $choice';
$res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error());
$row = mysql_fetch_assoc($res);
echo $row['power'], '<br />'; 
mysql_close($con);
?>

PHP должен получить ДАТУ в формате, который mysql будет читать ясно, а затем получить значения SUM для даты и эхо в div ... но не такая удача... не понимаю почему.

Алан

1 Ответ

1 голос
/ 24 ноября 2010

Если вы хотите выполнить некоторые другие операции на стороне сервера (похоже, у вас есть некоторые функции, связанные с графиком), вы можете проверить следующий код, чтобы увидеть, как выполнить публикацию, верните: -

<script type="text/javascript">   
            $(document).ready(function () {
            $( "#datepicker" ).datepicker({
                onSelect: function(dateText, inst) 
               {


            //Do AJAX post to daypower.php if you need to perform some server side operation
            $.ajax({
                type: "POST", 
                url: "/path/to/daypower.php",  // The actual path to the PHP file which will handle the AJAX request
                data: { selected_date: dateText},
                dataType: "json",
                success: function(json_data ) 
                {
                                    //Here json_data.result can be used.
                    //formatDate Requires a new date object to work 
                              var myDate = new Date(dateText); 
                              var myDate2 = new Date(dateText);
                              var myDate3 = new Date(dateText);
                              //Set a new var with different format to use 
                              var newFormat = $.datepicker.formatDate("DD, d", myDate); 
                              var newFormat2 = $.datepicker.formatDate("MM", myDate2);
                              var newFormat3 = $.datepicker.formatDate("yy", myDate3);
                              //Choose the div you want to replace 
                              $("#apDiv1").html(newFormat); 
                              $("#apDiv5").html(newFormat2);
                              $("#apDiv7").html(newFormat3);

                },
                beforeSend: function() 
                {
                    //display loading etc...
                },
                error: function() 
                {
                    //do something to handle error
                }
            });

        } 
      }); 
    });
    </script>

В концесерверной логики в файле daypower.php, откройте массив json_encoded результата, например: -

   echo json_encode(array("result"=>$result));

И вы сможете получить результат внутри события success сообщения AJAX какjson_data.result.Если вы хотите иметь две отдельные записи AJAX для ваших двух файлов, вы можете иметь вложенные записи AJAX, например: -

                   //Do AJAX post to daypower.php
               $.ajax({
                type: "POST", 
                url: "/path/to/daypower.php",  // The actual path to the PHP file which will handle the AJAX request
                data: { selected_date: dateText},
                dataType: "json",
                success: function(json_data ) 
                {
                    //another AJAX call to a separate php file
                    $.ajax({
                        type: "POST", 
                        url: "/path/to/daygraph.php",  // The actual path to the PHP file which will handle the AJAX request
                        data: { selected_date: dateText},
                        dataType: "json",
                        success: function(json_data ) 
                        {
                            //Finally perform display changes here

                        },
                        beforeSend: function() 
                        {
                            //display loading etc...
                        },
                        error: function() 
                        {
                            //do something to handle error
                        }
                    });
                },
                beforeSend: function() 
                {
                    //display loading etc...
                },
                error: function() 
                {
                    //do something to handle error
                }
            });

Но было бы лучше выполнять все операции на стороне сервера в одном вызове AJAX.потому что каждый вызов является отдельным запросом http и требует дополнительного времени для обработки.

Проверьте подробности jQuery Ajax Post .

Обновление

Вложенные почтовые запросы, как вам нужно: -

$.post('dayPower.php', {daDate: textDate.val() }
                    , 
                    function(data1) 
                    {
                        $.post(baseUrl+"/ajax/add_credit", {daDate: textDate.val() }
                        , 
                        function(data2) 
                        {
                         //Update both the results at a time (after both requests have responded - there will be synchronism in updation)
                            $('#apDiv2').html(data1).show();
                            $('#apDiv4').html(data2).show();
                        },"json");
                    },"json");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...