从php到JavaScript的数组

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

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:

 

<?php $array = array(); $nr = count($friends['data']); for($i = 0; $i array("http://graph.facebook.com/".$friends['data'][$i]['id']."/picture"); ?> <img src="http://graph.facebook.com//picture" />

Christopher McCann的更新

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

[02:46:21.281]缺少财产清单@ http://romanager.ro/api/examples/script.js:3

script.js中的第3行是

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

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

更新

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

PHP脚本:

   '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'); ?>    php-sdk  body { font-family: 'Lucida Grande', Verdana, Arial, sans-serif; } h1 a { text-decoration: none; color: #3b5998; } h1 a:hover { text-decoration: underline; }     
window.fbAsyncInit = function() { FB.init({ appId : 'getAppId(); ?>', 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); }()); <a href="https://stackoverflow.com/questions/4823516/array-from-php-to-javascript/">
Using JavaScript & XFBML:
Without using JavaScript & XFBML: <a href="https://stackoverflow.com/questions/4823516/array-from-php-to-javascript/">
<?php $array = array(); $nr = count($friends['data']); echo $nr; for($i = 0; $i 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 = 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 = matx[lista[m]][0] && shootX = 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

循环中的数组处理也是不正确的。

尝试将PHP代码更改为:

  

在这种情况下,标头将不起作用,因为在调用header()之前无法向浏览器输出任何内容(包括空格)。 在for循环中,您将HTML输出到浏览器,这将导致错误。

正如Orbling所说,你也没有正确地将元素添加到数组中。 我只是假设这是你想要的,但你想要的循环是:

 for($i = 0; $i < $nr; $i++) { $array[] = "http://graph.facebook.com/".$friends['data'][$i]['id']."/picture"; } 

我对你想用javascript实现的目标感到困惑。 我将使用以下代码来简化:

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

我会首先运行该代码以检查您是否返回JSON,然后使用回调函数来执行返回的json所需的操作。