2015-03-02 109 views
0

流程:主页 - > php上的ajax请求(tester.php) - > json信息返回主页面。Ajax调用php - 未定义的索引错误

我无法找到解决此错误的方法。由于

Ajax调用

$.ajax({ 
       url : "tester.php", 
       type : "POST", 
       //dataType : 'json', 
       data : { 
        'lat':lat, 
        'lng':lng, 
        'year1':year1, 
        'month1':month1, 
        'day1':day1, 
        'year2':year2, 
        'month2':month2, 
        'day2':day2, 
        'category':category 
       }, 
       success: function(data) 
       { 
        $.getJSON('tester.php',function(cost) 
         { 
          document.getElementById('userdensity').innerHTML = cost[0]+","+cost[1]; 
          document.getElementById('advertising_cost').innerHTML = cost[2]+","+cost[3]; 
         }); 
       }); 

PHP的:(tester.php):

<? 
$lat = $_POST['lat']; 
$lng = $_POST['lng']; 
$year1 = $_POST['year1']; 
$year2 = $_POST['year2']; 

$cost = array($lat,$lng,$year1,$year2); 
echo json_encode($cost); 

?> 

错误:

[02-Mar-2015 21:02:35 Europe/Berlin] PHP Notice: Undefined index: lat in /Users/tester.php on line 2 
[02-Mar-2015 21:02:35 Europe/Berlin] PHP Notice: Undefined index: lng in /Users/tester.php on line 3 
[02-Mar-2015 21:02:35 Europe/Berlin] PHP Notice: Undefined index: year1 in /Users/tester.php on line 4 
[02-Mar-2015 21:02:35 Europe/Berlin] PHP Notice: Undefined index: year2 in /Users/tester.php on line 5 

不确定错误所在。我过去做过这件事,并且进展顺利。

解决方案:改变成功:

success: function(data) 
       { 
        var info = $.parseJSON(data); 
          document.getElementById('userdensity').innerHTML = info[0]+","+info[1]; 
          document.getElementById('advertising_cost').innerHTML = info[2]+","+info[3]; 
       } 
+3

在成功参数为什么你再次调用$ getJSON? – 2015-03-02 20:18:53

+0

您的'成功'函数缺少关闭'}' – mhall 2015-03-02 20:24:01

+1

是的错误发生,因为您使用$ .getJSON发送GET请求到tester.php。在第二个不必要的请求中没有可用的POST变量 – NaN 2015-03-02 20:24:51

回答

0

的信息,你想使用已经由AJAX调用返回的getJSON得到,所以你可以简单地检索来自data变量返回。你可以重写这样的东西:

$.ajax({ 
      url : "tester.php", 
      type : "POST", 
      //dataType : 'json', 
      data : { 
       'lat':lat, 
       'lng':lng, 
       'year1':year1, 
       'month1':month1, 
       'day1':day1, 
       'year2':year2, 
       'month2':month2, 
       'day2':day2, 
       'category':category 
      }, 
      success: function(data){  
       response = $.parseJSON(data);          
       document.getElementById('userdensity').innerHTML = response[0]+","+response[1]; 
       document.getElementById('advertising_cost').innerHTML = response[2]+","+response[3]; 
      }; 
     }); 
+0

修复了未定义的索引,但是data [0] =='[',data [1] =='“'。任何想法为什么? – Johnxl 2015-03-02 20:35:36

+0

你可以在成功回调中放置一个'console.log(data);' ? – 2015-03-02 20:42:07

+0

结果:data == [“43.66203460000001”,“ - 79.42503199999999”,“2015”,“2015”] data [0] == [,data [1] ==“,data [2] == 4,数据[3] == 3.我如何取字符串而不是字符 – Johnxl 2015-03-02 20:51:43