странное поведение на многих постах ajax - PullRequest
0 голосов
/ 22 марта 2011

ребята! Вот моя проблема. У меня есть выбор, который изменяет ценовой диапазон, используя JQuery AJAX Post. Проблема в том, что время от времени нет определенного триггера, пост-действие завершается неудачно, и я получаю ошибку 404 (после многих 200 OK). Вы сталкивались с чем-то подобным раньше? Может ли это быть связано с кодом или это просто проблема с сервером? Это функция js:

function changePriceRange(event_id,elem){
alert('pr'+elem.val());
var data  = 
    {
        event_id:event_id,
        prange:elem.val(),
        event_name:$('#event_name').val(),
        event_date:$('#event_date3').val()
    }
if(event_id==0){
    var my_url = base_url+'change_prange_new';
}else{
    var my_url = base_url+'change_prange';
}
var request = 
    {
        url:my_url,
        type:'POST',
        data:data,
        success:function(response)
          {
            $('#section3_items').html(response);
          } 
    }
$.ajax(request);

//update gifts section

var data2  = 
    {
        event_id:event_id,
        prange:elem.val()
    }
var request2 = 
    {
        url:base_url+'update_gifts_section',
        type:'POST',
        data:data2,
        success:function(response)
          {
            $('#gifts_section').html(response);
          } 
    }
$.ajax(request2);

}

.. и ошибка 404 происходит на секции update_gifts_section. Спасибо ..

Ответы [ 3 ]

0 голосов
/ 22 марта 2011

Когда сервер отвечает кодом 404, это означает, что документ, соответствующий URL-адресу запроса, не найден.

В своем вызове ajax об "Обновлении подарков" вы указываете URL как

url:base_url+'update_gifts_section'

Если base_url является статической переменной (означает, что она не изменяется по отношению к некоторому фрагменту кода), то URL-адрес всегда одинаков. Если запрос получает HTTP200, а другой - HTTP404, это означает, что проблема основана на сервере, а не на коде. (Который в основном ваш вопрос).

Чтобы решить эту проблему, было бы полезно добавить более подробную информацию о том, как вы вызываете этот метод, как называется url (наблюдение с помощью fiddler и т. Д.).

0 голосов
/ 22 марта 2011

Я просто обновил ваш код, чтобы он выглядел лучше ...

function changePriceRange(event_id,elem){
alert('pr'+elem.val());
var my_url = (!event_id) ? base_url+'change_prange_new' : base_url+'change_prange';
jQuery.ajax({
        type:'POST',
        url:my_url,        
        data:({
                event_id:event_id,
                prange:elem.val(),
                event_name:jQuery('#event_name').val(),
                event_date:jQuery('#event_date3').val()
              }),
        success:function(response)
          {
            jQuery('#section3_items').html(response);
          },
        error: function(xhr,err){     
          alert('failure');   
          alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);     
          alert("responseText: "+xhr.responseText);  
        }
});

//update gifts section

jQuery.ajax({
        type:'POST',
        url:base_url+'update_gifts_section',        
        data:({
                 event_id:event_id,
                 prange:elem.val()
             }),
        success:function(response){
            jQuery('#gifts_section').html(response);
        },
        error: function(xhr,err){     
          alert('failure');   
          alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);     
          alert("responseText: "+xhr.responseText);  
        },
        statusCode: {
                404: function() {alert('page not found');}
        }   

});

}
0 голосов
/ 22 марта 2011

Вам нужно узнать больше об ошибке. А 404 означает, что страница не найдена, поэтому есть проблема с base_url? Например, иногда он нулевой?

Лучше всего добавить добавленную функцию обратного вызова, чтобы вы знали, когда произошел сбой вызова ajax. Это поможет вам разобраться в проблеме:

var request2 =      
{         
   url:base_url+'update_gifts_section',         
   type:'POST',         
   data:data2,         
   success:function(response)           
   {             
      $('#gifts_section').html(response);           
   }     
   error: function(xhr,err){     
      alert('failure');   
      alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);     
      alert("responseText: "+xhr.responseText);        {     
   } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...