2012-06-05 2 views
-2

puts.php (JSON)Этот код не работает. Зачем?

{ 
    "image":[ 
     { 
      "name":'<div id="yes">Hi!</div>' 
     } 
    ] 
} 

process.php

<HTML> 
    <HEAD> 
     <TITLE>Process</TITLE> 
     <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2.min.js"></script> 
     <script> 
      function loadPage() { 

       $(document).ready(function() { 

        $.getJSON('puts.php', function (JSON) { 
         $('#result').empty(); 

         $.each(JSON.image, function (i, img) { 
          $('#result').append(img.name) 
         }); 
        }); 
       }); 
      } 

      function loadEfect() { 

       $(document).ready(function() { 

        $('#yes').fadeOut(); 
        $('#yes').fadeIn(); 
       }); 
      } 

      function start() { 

       loadPage(); 
       loadEfect(); 
      } 
     </script> 
    </HEAD> 

    <BODY onLoad="start()"> 
     <div id="result"></div> 
    </BODY> 

</HTML> 

process.php код в функции loadEfect() не работает. (fadeIn, fadeOut не работает) Страница загружается loadPage() функция для работы, но loadEfect() функция не работает. Почему это? Где я могу сделать ошибку? Пожалуйста помоги.

+0

попробуйте отладить его с помощью firebug или аналогичного, чтобы получить лучшее сообщение об ошибке. если вы загружаете скрипт с синтаксическими ошибками с помощью javascript, вы не увидите генерируемого сообщения об ошибке –

+0

Я думаю, что часть его имеет две функции '$ (document) .ready()' ... –

+7

Я считаю, что все строки в JSON должны быть двузначными ... ** проверить консоль ошибок ** –

ответ

2

Не работает, потому что onload происходит после onready. попробовать что-то вроде этого:

$(function(){ 
    $.getJSON('puts.php' function(json){ 
     $.each(json.image, function(i, img){ 
      $('#result').append(img.name) 
     }; 
    }); 

    $('#yes').fadeOut(); 
    $('#yes').fadeIn(); 
}); 
+0

Как вам организовать код? –

+0

Порядок 'onload' и' onready' здесь не имеет значения. –

+0

@Rocket: becuase hes стартует, фактически добавляя материал эффекта к событию 'onready' после того, как это событие уже произошло. – prodigitalson

1

использовать только в двойных кавычках жала в вашем JSON:

{ 
    "image": [ 
     { 
      "name": "<div id='yes'>Hi!</div>" 
     } 
    ] 
} 

одинарных кавычках строки не допускаются. См. JSONLint.

+0

Результат: Действителен JSON –

+0

@WiseColt Код JSON, который вы разместили в своем вопросе, недействителен, хотя ... –

3

loadEfect не работает, потому что нет элемента с ID yes.

Кроме того, не следует использовать как onload, так и $(document).ready(. Используйте только один метод.

function loadPage() { 
    $.getJSON('puts.php', function (JSON) { 
     $('#result').empty(); 
     $.each(JSON.image, function (i, img) { 
      $('#result').append(img.name) 
     }); 
    }); 
} 

function loadEfect() { 
    $('#yes').fadeOut(); 
    $('#yes').fadeIn(); 
} 

$(document).ready(function(){ 
    loadPage(); 
    loadEfect(); 
} 

Затем удалите onLoad="start()" из вашего <body> тега.

+0

Я действительно сказал, но код не дал никакого ответа? Можете ли вы показать мне, как именно я должен писать? –

+0

@WiseColt: с чем вы столкнулись? Просто замените содержимое тега '