2017-02-24 49 views
0

我忙于从mysql获取数据并将其放入jquery datepicker中。 PHP方面很好。我用get方法测试它,它工作。所以我在JS/Jquery方面挣扎。 JS没有看到变量myText。但我在上面创建了一个。每日添加价格javascript/jquery无法正常工作

function addCustomInformation() { 

    $("#DatePicker td").filter(function() { 
    var date = $(this).text(); 
    return /\d/.test(date); 
    }).find("a, span").html(function(i, html) { 
    var myText; 
    var day = $(this).text(); 
    var month = $(".ui-datepicker-month").text(); 
    var year = $(".ui-datepicker-year").text(); 
    var date = day + " " + month + " " + year; 

    $.ajax({ 
     url : "../../../func.php", 
     type: "GET", 
     data : {check_datum: date, ItemID: <?= $_GET["ItemID"] ?>}, 
     success: function(info) 
     { 
      myText = info; 
      console.log(date + ", " + info); 
     } 
    }); 

    return html + "<br><small>$"+myText+"</small>"; 
    }); 
} 

回答

0

success函数是一个回调函数,意味着它稍后/异步运行。这意味着当return语句运行时,myText变量不会被设置。为了解决这个问题,这样做:

function addCustomInformation() { 
    $("#DatePicker td").filter(function() { 
    var date = $(this).text(); 
    return /\d/.test(date); 
    }).find("a, span").html(function(i, html) { 
    var $el = $(this); 
    var day = $el.text(); 
    var month = $(".ui-datepicker-month").text(); 
    var year = $(".ui-datepicker-year").text(); 
    var date = day + " " + month + " " + year; 

    $.ajax({ 
     url : "../../../func.php", 
     type: "GET", 
     data : {check_datum: date, ItemID: <?= $_GET["ItemID"] ?>}, 
     success: function(info) { 
      console.log(date + ", " + info); 
      $el.html(html + "<br><small>$" + info + "</small>"); 
     } 
    }); 

    return html; 
    }); 
} 
+0

非常感谢。现在只有一个问题。从数据库中加载的结果非常慢。我该如何解决这个问题? – Emin

+0

这听起来像是你的数据库设置/查询或你的php的问题。可能值得检查其中哪些导致它变慢。虽然这不太可能是你的JavaScript代码 –

0

$ .ajax是一个异步函数调用,所以执行return语句时不会设置myText的值。您将需要从成功功能中更新您的html。

+0

成功函数内返回只会退出'success'函数,而不是修改'.html'功能,它已经由点返回的结果。 –