これは私の目標です:twitter apiを使用して、ページをリロードせずに最近のつぶやきをいくつかのスライドに取り込みます。PHPでJSONを解析してJavascriptに渡すには?
私はこれを今のところ持っています。私は、JavaScriptページからphpページまで数秒ごとにajaxコールを作成しています。 phpページは、Twitterへの接続を設定および認証し、JSON形式の応答を取得します。ここで私の問題は、JSONの応答は私が得るすべてが混在し、いくつかの配列はいくつかのstdClassオブジェクトです。理想的には、このJSONをオブジェクトとしてJavascriptに直接渡したいので、Javascriptの内部で、jsonresponce-> statuses-> textのようにすることができます。
念頭に置いて、ここで同じ私が説明した構造が、コードであることを維持:
フロントエンド>
// JavaScript Document
function AJAXToTwitter(){
console.log("making ajax call");
$.ajax({
url: '../php/twiter-stream.php',
type: 'GET',
success: function(responce) {
$.each(responce, function(i, obj){
$(".LiveSlide1 .text").html(obj.text);
});
console.log("ajax call successful");
},
error: function(errors) {
console.log("ajax call failed");
}
})
}
$(document).ready(AJAXToTwitter);
バックエンド - >
//PHP Document
<?php
require "../vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$consumerKey = "iNol________________n5uVZcAB";
$consumerSecret = "o_______________________l1_J";
$accessToken = "142480736-jlOVy___________________________________tm5b7ZN";
$accessTokenSecret = "K___________________________________________wF__V";
function getToken($apiKey, $apiKeySecret, $axToken, $axTokenSecret) {
$connection = new TwitterOAuth($apiKey, $apiKeySecret, $axToken, $axTokenSecret);
return $connection;
}
$connection = getToken($consumerKey, $consumerSecret, $accessToken,
$accessTokenSecret);
$urlQuery = "#WebDesign";
$search = $connection->get("search/tweets", ["q" => $urlQuery]);
echo (json_encode($search));
?>
ここでの問題は、ということです私は、検索/ツイートのクエリの場合の応答はクラスだと思うので、json_encodeは文字列を生成し、$ .each関数を使用することはできません。 Chrome Dev Tools Consoleの正確なエラーには、
Uncaught TypeError: Cannot use 'in' operator to search for '70806' in
{"statuses":[{"created_at":"Sun Jun 11 17:15:40 +0000 .......
と表示され、エンコードされたjson文字列全体が吐き出されます。
私の質問は、このようなAPIを扱う際にJSONを処理する適切な方法は何ですか、PHPを使用しないでJavaScriptからの直接呼び出しを行うべきですか?手動ですべてのレスポンスを抽出し、それをハンドメイドの小さなJSONでエンコードする必要がありますか?それとも、javascriptに返されていないレスポンスをそのまま渡す方法はありますか?
JavaScriptの最初からJSONオブジェクトを処理するのがベストプラクティスです。方法はありますが、彼らはハッキーです。このように回避する必要があるバグはいつでも見つかるでしょう。 –
@ Z.Bagley私は参照してください、しかし、PHPでそれをやってみませんか?私はむしろ簡単な、簡単なものをハッキングするのではなく、より洗練されたより複雑な方法を持っています。 –
@TimAkgayev '$ .ajax'設定で' dataType: 'json''を明示的に指定してください。これにより、 'success'関数の' respondce'が確実にJavaScriptオブジェクトになります。 –