PHP и JSON помогают! - PullRequest
       6

PHP и JSON помогают!

0 голосов
/ 19 января 2010

У меня есть скрипт для обновления таблицы базы данных.Мне нужно вернуть массив JSON и обновить некоторые таблицы с помощью JQUERY.

мой php-скрипт:

$update = mysql_query("UPDATE PLD_SEARCHES SET STATUS = 1, TOTAL_RESULTS = ".$scrapper->getTotalResults().",RESULTS = $resultCounter WHERE ID = ".$searchId);
$output = array("status"=>"COMPLETED","results"=>$resultCounter,"totalResults"=>$scrapper->getTotalResults());
echo json_encode($output);

jquery код:

$("button").live("click", function(event){
                    event.preventDefault();
                    $.getJSON("startsearch.php",{ searchId: $(this).val() }, function(data){
                        alert(data[0].status);
                    });

сейчас ... проблема в том, что если я использую $.post("startsearch.php",{ searchId: $(this).val() }, function(data)), скрипт выполняется ия получаю хорошее предупреждение со значением неопределенным.если я добавлю параметр "json", скрипт больше не будет выполняться.Я пытался использовать getJSON, но опять та же проблема.

У кого-нибудь есть идеи?Я в отчаянии ... это беспокоило меня почти неделю, и мне до сих пор не удалось ее решить.

Ответы [ 4 ]

0 голосов
/ 19 января 2010

Хорошо, я доверяю json2.js, чтобы проанализировать данные json, возвращенные из запроса AJAX. Вы можете скачать его с http://json.org. Эта библиотека предоставляет лучший способ для анализа любой строки и выдает исключение, если строка не в json.

Я всегда пишу свой запрос AJAX так:

$.post(URL,
  { PARAM },
  function(data){
    try {
      var r = JSON.parse(data);
      //this for your code above
      alert (r.status); //should be 'COMPLETED'
    }
    catch (e) {
      //data is not in json format, or there are another exception in try block
      //do something about it
      alert('Exception occured, please check the data!');
    }
});

При обработке json массив в php станет переменным членом в json. Так что если в вашем php это $output['status'], то в json это будет r.status.

0 голосов
/ 19 января 2010

Вы можете получить данные своего ответа следующим образом:

alert(data.status);
alert(data.results);
alert(data.totalResults);
0 голосов
/ 19 января 2010

пожалуйста, не используйте оповещение, установите firebug в свой firefox или включите консоль javascript в chrome или safari.после этого вы можете использовать console.log(data);

, я думаю, что данные не являются массивом.также посмотрите на пример each () в документах jquery http://docs.jquery.com/Ajax/jQuery.getJSON

0 голосов
/ 19 января 2010

В вашем php файле убедитесь, что вы указали правильный тип контента:

header("Content-type: application/json; charset=utf-8");

чтобы jquery мог правильно eval ответить на объект json.

...