许多ajax帖子上的奇怪行为

时间:2011-03-22 09:39:57

标签: jquery ajax post

家伙! 这是我的问题。我有一个选择,使用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);

}

..并且在update_gifts_section上发生了404错误。谢谢..

3 个答案:

答案 0 :(得分:0)

您需要了解有关错误的更多信息。 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);        {     
   } 
} 

答案 1 :(得分:0)

当服务器回复代码404时,表示找不到与请求的URL对应的文档。

在关于“更新礼品”的ajax调用中,您将URL指定为

url:base_url+'update_gifts_section'

如果base_url是一个静态变量(意味着相对于某段代码没有改变),那么URL总是相同的。如果请求获得HTTP200而另一个请求获得HTTP404,则表示问题基于服务器而不是代码。 (这基本上是你的问题)。

要解决此问题,请添加有关如何调用此方法的更多详细信息,调用哪个url(使用fiddler等进行观察)会很有帮助。

答案 2 :(得分:0)

我只是更新你的代码以便更好看......

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');}
        }   

});

}