ajax变量无法在jquery中传递内部推送

时间:2013-10-23 11:09:11

标签: jquery ajax

我想在日期(y,m,i)中传递ajax变量inp而不是i。如果我传递这个变量inp而不是i意味着它给了我一个空白页面。如何解决这个问题。

$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$.ajax({
    url : 'cal_db.php',
success:function(result)
{
   var out = eval("("+ result +")");
   var inp = out[0].id; 
}
});
var arr = [];
$('#calendar').fullCalendar({
editable: true,
events: function(){
for(var i = 1; i <= 10; i++){
  arr.push({
    title: 'All Day Event',
    start: new Date(y,m,i)
  });
}
return arr;
}()
});
});

2 个答案:

答案 0 :(得分:0)

请勿使用eval()。在服务器上设置正确的mime类型和/或在ajax调用中将数据类型指定为json。

cal_db.php

的最开始
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

这会使dataType低于还原剂。

如果要在datepicker中使用ajax响应,则需要在success回调中移动datepicker代码。

$.ajax({
    url : 'cal_db.php',
    dataType: 'json',
    success:function(result) {
       var inp = result[0] ? result[0].id : null;

       if(inp){
           $('#calendar').fullCalendar({ /* make use of inp */ });
       }
    }
});

答案 1 :(得分:-1)

只需在成功函数之外声明inp变量,我想这应该可以帮到你,甚至你可以用Integer格式解析它并使用它。

$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var inp = -1;
$.ajax({
      url : 'cal_db.php',
      success:function(result)
      {
          var out = eval("("+ result +")");
          inp  = out[0].id; 
      }
});
var arr = [];
$('#calendar').fullCalendar({
     editable: true,
     events: function(){
     for(var i = 1; i <= 10; i++){
     arr.push({
     title: 'All Day Event',
     start: new Date(y,m,inp)
});
}