从php到JavaScript的数组 [英] array from php to JavaScript

查看:89
本文介绍了从php到JavaScript的数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用json将数组列表从php转移到javascript,但它不起作用。

i am trying to transfer a array list from php to javascript with json, but it does not work.

JS:

$.ajax({
url: 'getProfilePhotos.php',
type: 'post', // post or get method
data: {}, // if you need to pass post/get parameterds you can encode them here in JSON format
dataType: 'json', // the data type you want returned... we will use json
success: function(responseData) {
    var arrayList[0] = new Array();
    var lung = arrayList.length;
    for(var i = 0; i<lung; i++)
        //arrayList[i] = responseData.i;
        console.log(responseData.i);
}});

PHP:

<p> <?php  
        $array = array();
        $nr = count($friends['data']);

    for($i = 0; $i < $nr; $i++){
        $array = 'link'=>array("http://graph.facebook.com/".$friends['data'][$i]['id']."/picture");
        ?>
        <img src="http://graph.facebook.com/<?php echo $friends['data'][$i]['id'] ?>/picture" />
        <?php
    }
    header('Content-type: application/json');
    echo json_encode($array);

?></p>

Christopher McCann的更新

我在控制台中出错了。这是错误。

i have got a error in console. this is the error.

[02:46:21.281]缺少}属性列表@ http://romanager.ro/api/examples/script.js:3

[02:46:21.281] missing } after property list @ http://romanager.ro/api/examples/script.js:3

第3行在script.js中是

line 3 in script.js is

type: 'post', // post or get method

事实上我想从facebook个人资料照片中获取。用PHP脚本我设法得到照片,但我可以将ID从php转移到javascript。如果你需要我将尝试编写整个PHP脚本和javascript文件。

In fact i want to get from facebook profile photos. with php script i managed to get photos, but i can transfer ids from php to javascript. if you need i will try to write entire php script and javascript files.

更新

这些脚本仍有问题。在PHP脚本我做和Facebook上的用户身份验证,因为我需要来自Facebook的用户ID来获取他的朋友的ids。要登录我需要在PHP脚本中创建html。好吧,我将发布我的脚本代码,我希望你能帮助我。

still have problems with these scripts. in php script i do and authentification of user on facebook, because i need for user ID from facebook to get ids of his friends. to make login i need to create html in php script. well i will post the code of my scripts and i hope you will help me.

PHP脚本:

    <?php 
require '../src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => '137061043024243',
  'secret' => '619c4dc94343584eb7792ae9933978c9',
  'cookie' => true,
));

// We may or may not have this data based on a $_GET or $_COOKIE based session.
//
// If we get a session here, it means we found a correctly signed session using
// the Application Secret only Facebook and the Application know. We dont know
// if it is still valid until we make an API call using the session. A session
// can become invalid if it has already expired (should not be getting the
// session back in this case) or if the user logged out of Facebook.
$session = $facebook->getSession();

$me = null;
// Session based API call.
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
    $friends = $facebook->api('/me/friends');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

// login or logout url will be needed depending on current user state.
if ($me) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

// This call will always work since we are fetching public data.
$naitik = $facebook->api('/naitik');

?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>php-sdk</title>
    <style>
      body {
        font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
      }
      h1 a {
        text-decoration: none;
        color: #3b5998;
      }
      h1 a:hover {
        text-decoration: underline;
      }
    </style>
  </head>
  <body>
    <!--
      We use the JS SDK to provide a richer user experience. For more info,
      look here: http://github.com/facebook/connect-js
    -->
    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId   : '<?php echo $facebook->getAppId(); ?>',
          session : <?php echo json_encode($session); ?>, // don't refetch the session when PHP already has it
          status  : true, // check login status
          cookie  : true, // enable cookies to allow the server to access the session
          xfbml   : true // parse XFBML
        });


        // whenever the user logs in, we refresh the page
        FB.Event.subscribe('auth.login', function() {
          window.location.reload();
        });
      };

      (function() {
        var e = document.createElement('script');
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>


    <?php if ($me): ?>
    <a href="<?php echo $logoutUrl; ?>">
      <img src="http://static.ak.fbcdn.net/rsrc.php/z2Y31/hash/cxrz4k7j.gif">
    </a>
    <?php else: ?>
    <div>
      Using JavaScript &amp; XFBML: <fb:login-button></fb:login-button>
    </div>
    <div>
      Without using JavaScript &amp; XFBML:
      <a href="<?php echo $loginUrl; ?>">
        <img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif">
      </a>
    </div>
    <?php endif ?>
    <?php $array = array();
            $nr = count($friends['data']);

            echo $nr;

        for($i = 0; $i < $nr; $i++) {
            $array[$i] = "http://graph.facebook.com/".$friends['data'][$i]['id']."/picture";
        }
        header('Content-type: application/json');
        echo json_encode($array);
        ?>
  </body>
</html>


JAVASCRIPT

    $.post("getProfilePhotos.php", function(data) { alert(data); console.log(data);/*DO WHAT YOU WANT WITH DATA HERE*/}, "json");

window.onload = init;
function init() {
    if (window.Event) {
        document.addEventListener("mousemove", getCursorXY("mousemove"), false);
        var cursorXX = 0;
        var cursorYY = 0;

        var cursorX = document.getElementById("cursorX");
        var cursorY = document.getElementById("cursorY");

        cursorX.innerHTML = cursorXX;
        cursorY.innerHTML = cursorYY;
    }

    //initializare canvas1
    canvas = document.getElementById('game');
    //coordonatele unde se afla mouseul
    canvas.onmousemove = getCursorXY;

    //initializare canvas2
    canvas2 = document.getElementById('teroristi');
    //coordonatele unde se afla mouseul
    canvas2.onmousemove = getCursorXY;

    //lista de inamici
    lista = new Array();

    initial();

    for(var j = 0; j < 20; j++)
        for(var k = 0; k < 2;k++)
            console.log(matx[j][k]);// = -1000;

    scor = 0;
    viata = 5;

    //creerea contextului de desenare 2D
    ctx2 = canvas2.getContext("2d");
    ctx = canvas.getContext("2d");

    //creerea unui obiect imagine
    img = new Image();
    img.src = 'glont.png';

    imgTerorist = new Image();
    imgTerorist.src = 'terorist.jpg';

    ctx.beginPath();
    ctx.stroke();

    imgviata = new Image();
    imgviata.src = 'vieti.png';
    //score();
    viataF();
}

//initializeaza matricea de aparitii
function initial(){

    matx = new Array(24);
    for (var m = 0; m <24; m++)
        matx[m] = new Array(3);

    for(var m = 0; m < 24; m++)
        matx[m][2] = 0;

    matx[0][0] = 20;
    matx[0][1] = 20;

    for(var m = 1; m < 6; m++){
        matx[m][0] = matx[m-1][0] + 80;
        matx[m][1] = matx[m-1][1];
    }

    matx[6][0] = matx[0][0];
    matx[6][1] = matx[0][1] + 120;

    for(var m = 7; m < 12; m++){
        matx[m][0] = matx[m-1][0] + 80;
        matx[m][1] = matx[m-1][1];
    }

    matx[12][0] = matx[0][0];
    matx[12][1] = matx[0][1] + 240;

    for(var m = 13; m < 18; m++){
        matx[m][0] = matx[m-1][0] + 80;
        matx[m][1] = matx[m-1][1];
    }

    matx[18][0] = matx[0][0];
    matx[18][1] = matx[0][1] + 360;

    for(var m = 19; m < 24; m++){
        matx[m][0] = matx[m-1][0] + 80;
        matx[m][1] = matx[m-1][1];
    }

}

function getCursorXY(e) {

    //se ia pozitia de pe axa x al cursorului
    cursorXX = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);

    //se ia pozitia de pe axa y al cursorului
    cursorYY = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);

    //
    var cursorX = document.getElementById("cursorX");
    var cursorY = document.getElementById("cursorY");

    cursorX.innerHTML = cursorXX;
    cursorY.innerHTML = cursorYY;
}

function Nr(){
    return Math.floor(Math.random()*24);
}

//stergerea inamicului
function sterge(x){
    //setTimeout("genereaza(flag)",3000);
    var img = ctx.createImageData(60, 100);
    for (var i = img.data.length; --i >= 0; )
        img.data[i] = 0;
    ctx.putImageData(img, matx[x][0], matx[x][1]);
    matx[x][2] = 0;
}

//genereaza inamici
function genereaza(flag){
    if(flag == 1){
        setTimeout("genereaza(flag)", 2000);
        var x = Nr();
        terorist(x);
        if(lista.length > 3){
            viata = viata - 1;
            sterge(lista[0]);
            lista.splice(0, 1);
            viataF();
        }
    }
}

//creeaza un inamic
function terorist(x){
    console.log("X primit = " + x + "valoarea flagului = " + matx[x][2]);
    //sterge(x);
    if(matx[x][2] == 0){
        ctx.drawImage(imgTerorist,matx[x][0],matx[x][1]);
        matx[x][2] = 1;
        lista.push(x);
    }
    else if(matx[x][2] == 1){

        var q = Nr();
        console.log("in recursie: " + q);
        terorist(q);
    }
}

function viataF(){
    var remove = ctx2.createImageData(20,20);
    for (var i = remove.data.length; --i >= 0; )
        remove.data[i] = 0;
    ctx2.putImageData(remove, 10, (10+(viata*20)));

    console.log(viata);
    for(var m = 0; m < viata; m++)
        ctx2.drawImage(imgviata,10,(10+(m*20)));
}

function impuscat(){

    var shootX = cursorXX;
    var shootY = cursorYY;
    var tm = 0;

    console.log("ShootX = " + shootX + " ShootY = " + shootY);

    for(var m = 0, tm = lista.length; m < tm; m++){
        if(shootX >= matx[lista[m]][0] && shootX <= matx[lista[m]][0] + 60 && shootY >= matx[lista[m]][1] && shootY <= matx[lista[m]][1] + 100){
            sterge(lista[m]);
            lista.splice(m, 1);
            scor = scor + 10;
            console.log("IMPUSCAT");
        }
    }
}

function glont(x, y){
    ctx.beginPath();
    ctx.stroke();
    ctx.drawImage(img,x-40,y-40);
    impuscat();
}

function mouse(){

    impuscat();
    /*console.log('Maus apasat');
    console.log(cursorXX);
    console.log(cursorYY);*/
    //glont(cursorXX, cursorYY);
    //console.log("Dupa glont()");
}
function start(){
    viataF();
    flag = 1;
    genereaza(flag);
    setTimeout("stop()", 10000);
}

function stop(){
    ctx2.fillStyle    = '#000000';
    ctx2.strokeStyle   = '#FFFFFF';
    ctx2.font         = 'bold 30px sans-serif';
    ctx2.fillText  ('TIMPUL A EXPIRAT!', 100, 200);
    ctx2.fillText('Scorul tau este: ' + scor, 100, 235);
    console.log("TIMPUL A EXPIRAT");
    flag = 0;
    genereaza(flag);
}

function score(){
    ctx2.fillStyle    = '#000000';
    ctx2.strokeStyle   = '#FFFFFF';
    ctx2.font         = 'bold 15px sans-serif';
    ctx2.fillText('Scorul tau este: ', 350, 20);
}


推荐答案

您的PHP部分错误您仍在尝试生成HTML,而不是只是JSON

Your PHP section is wrong as you are still trying to generate HTML, rather than just JSON.

此外,循环中的数组处理也不正确。

Also the array handling within the loop is incorrect.

尝试将PHP代码更改为:

Try changing the PHP code to:

<?php
$friendData = array();

foreach ($friends['data'] as $cFriend) {
    $friendData[$cFriend['id']] = "http://graph.facebook.com/" . $cFriend['id'] . "/picture";
}

header('Content-Type: application/json');
echo json_encode($friendData);
exit;

这篇关于从php到JavaScript的数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆