Ajax не получает ничего от php - PullRequest
1 голос
/ 25 апреля 2010

Jquery У меня нет оповещения и Firefox, у меня нет ничего взамен. Код работал раньше, у запроса к базе данных также есть успешные записи. Чего мне не хватает ???

  1. JQuery AJAX.

    $.ajax({
      type    : "POST",
      url     : "include/add_edit_del.php?model=teksten_display",
      data    : "oper=search&ids=" + _id ,
      dataType: "json",
      success : function(msg){
       alert(msg);
      }
     });
  1. PHP

       case 'teksten_display':
           $id = $_REQUEST['ids'];           
           $res =  $_dclass->_query_sql(
               "select a,b,id,wat,c,d from tb1 where id='" . $id . "'" );
           $_rows = array();

           while ( $rows = mysql_fetch_array ($res) ) { $_rows = $rows; }
   //header('Cache-Control: no-cache, must-revalidate');
   //header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
   header('Content-type: application/json');

           echo utf8_encode( json_encode($_rows) ) ;
           //echo json_encode($_rows);
           //var_dump($_rows);
           //print_r ($res);

           break;
  1. Заголовок ответа / запроса Firefox

Date Sat, 24 Apr 2010 22:34:55 GMT
Server Apache/2.2.3 (CentOS)
X-Powered-By PHP/5.1.6
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Content-Length 0
Connection close
Content-Type application/json

Host www.xxxx.be
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-2.fc12 Firefox/3.5.9
Accept application/json, text/javascript, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With XMLHttpRequest
Referer http://www.xxxx.be/xxxxx
Content-Length 17
Cookie csdb=2; codb=5; csdbb=1; codca=1.4; csdca=3; PHPSESSID=benunvkpecqh3pmd8oep5b55t7; CAKEPHP=3t7hrlc89emvg1hfsc45gs2bl2

Ответы [ 3 ]

1 голос
/ 25 апреля 2010

$. Обратный вызов ajax success возвращает все, что вы хотите, чтобы он возвращался, в этом случае вы возвращаете объект json OBJECT, и кажется, что вы ожидаете просто отобразить сообщение об успехе. Ваша переменная msg фактически содержит объект, а не "Success!" строка - для отображения чего-либо вам нужно использовать msg ['variable_from_json_object'], который покажет это значение.

На некоторые вещи я бы также обратил внимание, если не ваш jquery вызывает проблемы при вызове utf8_encode, работает ли этот метод для преобразования всего объекта json или его нужно запускать для каждого элемента ДО его преобразования JSON? JSON помнит, это объект, а не строка.

Вы можете взглянуть на это , чтобы получить лучшее представление о том, как вы можете преобразовать свой массив в uft8, а затем в json.

echo json_encode(utf8_encode_array($_rows));

с методом, указанным в ссылке, возможно ..

Наконец, чтобы убедиться, что ваш json создается успешно, посетите URL, который вы называете ajax, как обычную страницу: include / add_edit_del.php? Model = teksten_display & oper = search & ids = "+ _id. конечно, заменив _id значением только для тестирования. Я думаю, что здесь вы можете увидеть проблему, так как ваш URL не должен содержать параметры запроса, они все должны быть в ваших данных, если вы собираетесь использовать этот параметр. I может ожидать что-то из следующего:

  $.ajax({
  type    : "POST",
  url     : "include/add_edit_del.php",
  data    : "model=teksten_display&oper=search&ids=" + _id,
  dataType: "json",
  success : function(msg){
   alert(msg);
  }
 });

ИЛИ вообще не использовать параметр данных и втиснуть его в URL, потому что URL не ожидает параметров запроса (? Var = foo), когда он видит данные, он заменяет параметры URL на значения, предоставленные в данных

  $.ajax({
  type    : "POST",
  url     : "include/add_edit_del.php?model=teksten_display&oper=search&ids=" + _id",
  dataType: "json",
  success : function(msg){
   alert(msg);
  }
 });

Удачи!

0 голосов
/ 26 апреля 2010

В любом случае, я получил его CentOS 5.4 в моей коробке: [root @ www include] # php -version PHP 5.1.6 (cli) (сборка: 13 января 2010 17:09:42) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies [root @ www include] #

Решение: http://gargiullo.com/tag/json_encode/

0 голосов
/ 25 апреля 2010

добавьте эту строку к вам ajax, посмотрите, есть ли ошибка

success : function(msg){
       alert(msg);
},
error : function(request, status, error) {
    if(status == 'parsererror' || status == 'error') {
        alert(error);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...