извлеченные избыточные данные json

#php #jquery #json

#php #jquery #json

Вопрос:

 $('.editBtn').click(function(){//EDIT BUTTON EVENT
        $.getJSON('edit.php?url=' encodeURI($(this).siblings('a').attr('id')) 'amp;action=edit',function(data){
           $.each(data, function(key, val) {
               alert(key ': ' val);
            });
        });
    });//EDIT BUTTON END
  

и вот часть php, о которой идет речь:

 elseif($_GET['action']=='edit'){
$output=$mysql->getDb()->query("select * from video
    where url='{$_GET['url']}'")->fetchAll();
header("content-type: application/json");
echo json_encode($output[0]);
}
  

что происходит, так это то, что при нажатии на .editBtn кнопку появляется предупреждение 0:value0, 1:value1,... , а затем снова, но таким образом, каким я только хочу, чтобы это было name0:value0, name1:value1,...

что происходит?

p.s. php запускается независимо:

{"url":"www.vimeo.com/20721308","0":"www.vimeo.com/20721308","title":"Dis-patch Festival R.I.P.","1":"Dis-patch Festival R.I.P.","description":"Sadly, the last goodbyes to the Dis-patch Festival Belgrade edition in this tribute "R.I.P." video collage. The end is always the beginning...","2":"Sadly, the last goodbyes to the Dis-patch Festival Belgrade edition in this tribute "R.I.P." video collage. The end is always the beginning...","country":"serbia","3":"serbia","postDate":"2011-05-07 05:56:04","4":"2011-05-07 05:56:04","views":null,"5":null}

Комментарии:

1. ты можешь убежать edit.php самостоятельно и вставить вывод сюда?

2. То есть вы хотите сказать, что он проходит через все и предупреждает обо всем дважды? Все кажется правильным. Может быть, вы дважды подключаете обработчик щелчков? У вас это где-нибудь размещено, чтобы мы могли увидеть это в действии?

3. извините за недопонимание. я имел в виду, что я не хочу number:value появляться, но вместо этого только title:value . заставил это работать с помощью хорошего совета Jobsz. Спасибо

Ответ №1:

Не совсем уверен в формате, который здесь возвращается.. Обычно объекты framework SQL возвращают набор данных в своем собственном объектном формате.. Вероятно, вы хотите передать данные SQL в объект array, а затем json_encode массив обратно вашему клиенту.

 $returnData = array(
    'name' => $output[0]->name,
    'videopath' => $output[1]->videopath 
);

echo json_encode(array('success'=>1, 'data'=>$returnData));
  

Комментарии:

1. Никаких проблем — следите за вашими примитивными типами данных в сравнении с типами данных, родными для вашей платформы — часто они будут несовместимы с другими языками. Я также предлагаю при работе с ajax использовать ключ данных успеха для обработки ответов 🙂

2. пожалуйста, если у вас есть какая-либо статья / обсуждение, на которое вы могли бы сослаться, я был бы рад прочитать.

3. Я хотел бы вам что-нибудь дать, но это просто основано на моем собственном опыте. Просто попробуйте думать о вызовах ajax как о событии установления связи с вашим клиент-сервером. Вы хотите убедиться, что безопасно использовать то, что вам предоставляет сервер, используйте идентификатор, если данные безопасны (не null и т.д.), Возможно, сообщение об ошибке вместе с ним.

4. спасибо, мне наверняка придется подробнее ознакомиться с jquery ajax api.