0

基本的にこれが機能する場合。クエリダイアログボックスが開きます

$("#opener").click(function() {
    $.ajax({
        url: "hello.php",
        success: function(data) {
            $("#dialog").html(data).dialog("open");
        }
    });

    $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 400,
        width: 400,
        modal: true
    });
});​

から呼びたい

onClick="callMyFuncion(withDetails);

そして基本的にmyDetailsでajaxgetリクエストを送信します..これが私が試していることです

function getDayDetails(details) {
    $.ajax({
        type: "GET",
        data: details,
        url: "hello.php",
        success: function(data) {
            $("#dialog").html(data).dialog("open");
        }
    });

    $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 400,
        width: 400,
        modal: true
    });
};​

ここから呼んで

<td class="everyday" onClick="getDayDetails(monthID=<?php echo $month; ?>&dayID=<?php echo $day_num; ?>&yearID=<?php echo $year; ?>);">

私はJavascript/Jqueryを初めて使用します。助けてくれてありがとう

4

5 に答える 5

2

Ajaxは非同期です..したがって、このようには機能しません..

これを試して

$(function(){ // In the DOM ready
              // define the code for the dialog
    $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 400,
        width: 400,
        modal: true
    });
});​

function getDayDetails(details) {
    $.ajax({
        type: "GET",
        data: details,
        url: "hello.php",
        success: function(data) {
            $("#dialog").html(data).dialog("open");
            // Add the new HTMl to the dialog and then open..
        }
    });
}
于 2012-12-06T21:10:19.580 に答える
2

インラインJavaScriptを動的にする方法が手元になかったため、インラインJavaScriptを使用することを選択したと思います。

data-*別の方法として、属性を使用して日付値を保持することもできます。以下に示すように:

<td class="everyday"
    data-month="<?php echo $month; ?>"
    data-day="<?php echo $day_num; ?>"
    data-year="<?php echo $year; ?>">
  ...
</td>

そして、JavaScriptをインライン化する代わりに関数を使い続けて.click()ください[言われたように]これは避けるべきです。

$("td.selector").click(function() {
  var data = $(this).data();
  $.ajax({
    type: "GET",
    url: "hello.php",
    data: { monthID: data.month, dayID: data.day, yearID: data.year },
    success: function(data) {
      $("#dialog").html(data).dialog("open");
    }
  });
});​

オブジェクトとして渡すdataには、jQueryがパラメータを自動的にエンコードするという利点があります。$.ajax

.dialog()最後に、初期化を.ready()関数に移動できます。

$(document).ready(function() {
  $("#dialog").dialog({
    bgiframe: true,
    autoOpen: false,
    height: 400,
    width: 400,
    modal: true
  });
});
于 2012-12-06T21:23:32.560 に答える
0

PHPによって作成された結果のパラメーターは文字列です。したがって、引用符で囲む必要もあります。

<td class="everyday" onClick="getDayDetails('monthID=<?php echo $month; ?>&dayID=<?php echo $day_num; ?>&yearID=<?php echo $year; ?>');">
于 2012-12-06T21:12:25.020 に答える
0

私があなたの質問を正しく理解しているなら、それはdataパラメータが正しくないからです。
次のようになります。

data: { monthID:monthValue, dayID:dayValue, yearID:yearhValue }
于 2012-12-06T21:12:41.033 に答える
0

この奇妙なonClickspaggetiコードをすべて使用しないようにするためのより良い方法は、データ属性を使用してDOMにパラメーターを含めることです。たとえば、tdは次のようになります。

<td data-day="Mon" data-month="june"> 

したがって、次のようなパラメータを取得できます。

$('td').on('click', function() {
     var day = $(this).attr('data-day');
     //And so on 
     //Add them to a data object 
     var data = {}; 
     data.day = day; 
     //Fire your ajax submitting the data object, 

}); 

最後に、ajaxは非同期であるため、成功コールバック内にダイアログコードを配置する必要があります。

楽しむ。

于 2012-12-06T21:15:37.757 に答える