使用Ajax获取JSon数据

时间:2017-06-20 15:08:54

标签: javascript php json ajax

你们可以帮助我吗?我不是一个真正的JS开发人员,所以我用这个来调查我的头发。 我正在使用Ajax来显示来自json文件的数据......但是它不起作用,我把console.log放在几乎所有地方以查看结果但是它不能工作,这里'我的代码:

编码数据:

// Inclusion du ficher de fonction permettant de démarrage du contexte de l'applicaiton
Include $_SERVER["DOCUMENT_ROOT"].DIRECTORY_SEPARATOR."Includes".DIRECTORY_SEPARATOR."Functions".DIRECTORY_SEPARATOR."functions.php";

// Initialisation des variables
$action     = '';
$pValue     = '';
$pType      = '';
$pRegion    = '';
$currenthyperviseur = new hyperviseur();
$currentregion      = new region();

// Récupération de l'action passée au webservice
if(isset($_REQUEST['action']) && $_REQUEST['action']!= "")      {$action = $_REQUEST['action']; }
if(isset($_REQUEST['pValue']) && $_REQUEST['pValue']!= "")      {$pValue = base64_decode($_REQUEST['pValue']); }
if(isset($_REQUEST['pType']) && $_REQUEST['pType']!= "")        {$pType = $_REQUEST['pType']; }
if(isset($_REQUEST['pRegion']) && $_REQUEST['pRegion']!= "")    {$pRegion = $_REQUEST['pRegion']; }

// Gestion de l'ensemble des cases du web service
switch($action)
{
    //
    // Permet la récupération de données dans l'Hyperviseur (GET)
    //
    case 'H_getAlmBacPFull'     : echo json_encode($currenthyperviseur->getListAlarmeBac(1));           break;
    case 'H_getAlmBacTFull'     : echo json_encode($currenthyperviseur->getListAlarmeBac(2));           break;
    case 'H_getGrpBacTFull'     : echo json_encode($currenthyperviseur->getListAlarmeQualifBac());      break;

    case 'H_getAlmDetails'      : echo json_encode($currenthyperviseur->getAlarmeDetails($pValue));     break;
    case 'H_getGrpDetails'      : echo json_encode($currenthyperviseur->getGroupeDetails($pValue));     break;

    //
    // Permet la MAJ de données dans l'Hyperviseur (SET)
    //
    case 'H_setCheckAlm'        : echo $currenthyperviseur->setAlarmeCheckAction($pValue);              break;
    case 'H_setGroupAlm'        : echo $currenthyperviseur->setGroupAlarme($pValue);                    break;
    case 'H_setAlmIdGrp'        : echo $currenthyperviseur->setAlarmeIdGrp($pValue);                    break;


    //
    // Permet la récupération de données pour le module 'HyperViseur MoreDetails' (GET)
    //
    case 'HVMD_getContentBloc'  : echo json_encode($currenthyperviseur->getContentBloc($pType, $pValue));   break;


    //
    // Permet la récupération de données pour le module 'Region' (GET)
    //
    case 'R_getListContentBloc' : echo json_encode($currentregion->getListContentBloc($pType));         break;
    case 'R_getContentBloc'     : echo json_encode($currentregion->getContentBloc($pType, $pRegion));   break;
        //
    // Permet la récupération de données pour le module la map des régions
    //
    case 'dashMap_getSite'  : echo json_encode($dashMap_getSite($pRegion);          break;


}

函数dashMap_getSite($ pRegion)来获取数据:

    $dataArray = array();
    if($pRegion == 'all')
    {
        $dataLine = array();
        $dataLine['codeSite']   = "01014";
        $dataLine['latitude']   = '46.2625';
        $dataLine['longitude']  = '5.6380';
        $dataLine['nom']        = 'Oyonnax 2';
        $dataLine['nbAlm']      = 10;
        $dataLine['critilevel'] = 2;
        array_push($dataArray, $dataLine);

        $dataLine = array();
        $dataLine['codeSite']   = "04025";
        $dataLine['latitude']   = '44.4242';
        $dataLine['longitude']  = '6.7533';
        $dataLine['nom']        = 'Barcelonette 3 Est TDF';
        $dataLine['nbAlm']      = 0;
        $dataLine['critilevel'] = 1;
        array_push($dataArray, $dataLine);
    }
    return $dataLine;

第二个函数getArrayOfSiteAjax()用ajax显示它

        console.log(gWsProviderUrl);
        $.ajax({
            url: gWsProviderUrl + '?action=dashMap_getSite&pRegion=all',
            type:  'POST',
            dataType: 'json',
            success:function(data){
        console.log('arrayOfSite');
                arrayOfSite = data;

                $.each(arrayOfSite, function(currentIdx, currentValue){

                    console.log('codeSite   => ' + currentValue.codeSite );
                    console.log('latitude   => ' + currentValue.latitude );
                    console.log('longitude  => ' + currentValue.longitude );
                    console.log('nom        => ' + currentValue.nom );
                    console.log('nbAlm      => ' + currentValue.nbAlm );
                    console.log('critilevel => ' + currentValue.critilevel);
                });
                console.log('heyy');
            }
        });

谢谢!

1 个答案:

答案 0 :(得分:0)

case 'dashMap_getSite'  : echo json_encode($dashMap_getSite($pRegion);          break;

这是一个语法错误,应该是

case 'dashMap_getSite'  : echo json_encode(dashMap_getSite($pRegion));          break;

由于出现错误,success回拨未被调用,您无法收到消息。

要显示数据,您可以执行以下操作:

// ...
success: function (data) {
  var container = $('#container'); // the element in which you want to display the data
  // loop over each item in the array
  $.each(data, function (index, element) {
    var outer = $('<div />');
    // element is an object, loop over its properties
    $.each(element, function (key, value) {
      var inner = $('<div />');
      inner.text(key + ': ' + value);
      outer.append(inner);
    })
    container.append(outer);
  });
}
// ...