3

誰でもここで助けることができますか、配列を使用してデータを分割していますが、これが添付されているビューで上記のエラーが発生します。

ここに私のコードがあります:

ajax ビューの PHP:

$images = array();
  $data_link = array();
  $data_id = array();
  $data_likes = array();
  $data_text = array();
  foreach ($media as $data) {
    //dd($data->caption);
    $images[] = array(
        //dd($data->caption),
        "data_url"=>$data->images->standard_resolution->url,
        "data_link"=>$data->link,
        "data_text" => $data->caption['text'],
        "data_id"=>$data->getId(),
        "data_likes"=>$data->likes->count,
        "data_like"=>$current_user->likes($data),
        "data_token"=>$token

    );
  }
  echo json_encode(array(
    'next_id' => $media->getNextMaxTagId(),
    'images'  => $images
  ));

次に、[さらに読み込む] ボタンを使用してデータにアクセスします。コードをデバッグすると、次の$data->captionようになります。

object(stdClass)#62 (4) {
  ["created_time"]=>
  string(10) "1377775401"
  ["text"]=>
  string(48) "New arrival #folkclothing reversible knit/jacket"
  ["from"]=>
  object(stdClass)#63 (4) {
    ["username"]=>
    string(18) "vanmildertclothing"
    ["profile_picture"]=>
    string(76) "http://images.ak.instagram.com/profiles/profile_24567722_75sq_1342623790.jpg"
    ["id"]=>
    string(8) "24567722"
    ["full_name"]=>
    string(11) "Van Mildert"
  }
  ["id"]=>
  string(18) "533141169038331174"
}

このエラーが発生する理由を知っている人はいますか?


エラーが予想どおりではないため、ここで編集しました


このための ajax jquery 呼び出しは次のとおりです。

  $('#more').click(function() {
    var tag   = $(this).data('tag'),
        maxid = $(this).data('maxid');

    $.ajax({
      type: 'GET',
      url: '/ajax',
      data: {
        tag: tag,
        max_tag_id: maxid
      },
      dataType: 'json',
      cache: false,
      complete: function(){
      },
      success: function(data) {
        // Output data
        $.each(data.images, function(i, src) {
        var $content = $('<article class="instagram-image"><form id="'+ data.images[i].data_token +'" class="forms status-'+ data.images[i].data_like +'" action="'+base+'" method="post"><a class="fancybox" rel="folk-1" href="' + data.images[i].data_url + '"><img alt="' + data.images[i].data_text + '" src="' + data.images[i].data_url + '" alt="' + data.images[i].data_text + '" /></a><div class="formSubmit-feedback"></div><input type="hidden" name="id" value="'+ data.images[i].data_id +'"><p>'+ data.images[i].data_likes +'</p></form></article>');
            var duration = 1000, n = 0.1;
          $content.appendTo('section#images');
          $item = $content.find('form');
          if( $item.hasClass("status-false") ){
                $item.addClass("notLiked");
                //$('.notLiked').find('button.unlike').hide();
                $item.find('a').after('<button class="ajax instabtn button-like like icon-heart" type="submit" name="action" value="Like"></button>');
            }
            if( $item.hasClass("status-true") ){
                $item.addClass("Liked");
                //$('.Liked').find('button.like').hide();
                $item.find('a').after('<button class="ajax instabtn button-unlike unlike icon-heart" type="submit" name="action" value="Unlike"></button>');
            }
          });
        // Store new maxid
        $('#more').data('maxid', data.next_id);
      },
      error:function(){
        $('#error-panel').html('<p class="error"><strong>Oops!</strong> Try that again in a few moments.</p>');
    }
    });
  });

ページには、より多くのinstagram画像をコンテナーにロードするボタンがありますが、他のすべてのものでは問題なく機能しますが、アクセスしようとしているキャプション->テキストでは機能しません。URL /ajaxにアクセスすると、必要なデータが取得され、text_data配列にテキストが表示されますが、それをロードから画像にロードすると、エラーが発生します。

これは私が得る正確なエラーです:

Error rendering view: [instagram.ajax]Trying to get property of non-object

最初に思ったほど単純ではありません。

4

4 に答える 4

7

まさにそのとおりです:$data->captionobjectですが、 を使用して配列のようにアクセスしようとしています$data->caption['text']。代わりにオブジェクトのようにアクセスします。

$data->caption->text
于 2013-08-30T14:56:21.280 に答える
5

$data->captionはオブジェクトですが、コードは配列であるかのようにアクセスしようとしています。

$data->caption['text']に変更$data->caption->text

于 2013-08-30T14:56:19.717 に答える
3

$data->captionはオブジェクトであり、配列としてアクセスしています。

$data->caption->text代わりに使用してください。

于 2013-08-30T14:56:53.127 に答える
0

正しい答えはこれでした:

foreach ($media as $data) {
    $title = (isset($data->caption))?mb_substr($data->caption->text,0,70,"utf8"):null;
    $images[] = array(
        "data_url"=>$data->images->standard_resolution->url,
        "data_link"=>$data->link,
        "data_text" => htmlspecialchars($title),
        "data_id"=>$data->getId(),
        "data_likes"=>$data->likes->count,
        "data_like"=>$current_user->likes($data),
        "data_token"=>$token

    );
  }

そのため、画像配列の前に変数を宣言し、配列でアクセスしました。

于 2013-08-30T16:11:04.177 に答える