在这里看不到警报。原因是什么?

时间:2011-06-18 16:15:49

标签: javascript jquery zend-framework

function votar(eid){
    alert('inside function');
    $.post(baseUrl+"/index/voto",{id:eid},function(e){
            alert('after post');

我在这里有这个功能。在开发人员服务器上,我全力以赴。没问题。 一旦我上传到生产服务器,我只得到第一个要显示的警报。

$.post(baseUrl+"/index/voto",{id:eid},function(e){

baseUrl是正确的。

/ index / voto是正确的路径(与dev。服务器相同)到voto方法到索引控制器,id:edid是json格式是的,所以,没有错,最后,我只是有回调。

对于生产环境中没有显示第二个警报的事实,我们有什么可能性?

稍后在同一个文件中,我有这个函数,同一行代码,它完美地工作:

function showDetails(eid, elemento){
  $.post(baseUrl+"/index/details.campaign",{id:eid},function(e){

唯一的区别是它调用的服务器端功能,一方面是“details.campaign”,另一方面是“voto”。

我们可以说这个问题必须依赖那里吗?只有那里?

更新: 这是ipsis verbis,完整的投票功能:

function votar(eid) {
    $.post(baseUrl+"/index/voto",{id:eid},function(e){
        var divMsg = $("#msg");
        var colunasFinalistas = $("#colunasFinalistas");
        var rodape = $("#rodape");
        var botaoVota = $("#votaEmGrande");
        var html = "";

    //no caso de votar pela primeira vez
    if(e.msg == 1){
        html = '<img src="'+baseUrl+'/lib/img/obrigadoParticipacao.png" alt="pdf" />';
                        rodape.removeClass("margemSeparadorRodape");
                        colunasFinalistas.hide();
        }else if(e.msg == 3){
            //no caso ja ter votado - se não existir nenhum elemento já:
                        if ($('#votoJaContabilizado').length == 0) {
                            botaoVota.after('<p id="votoJaContabilizado">O teu voto já foi contabilizado.</p>');
                        }
        } else if(e.msg == 2){
            //no caso da equipa nao existir
            html = '<img src="'+baseUrl+'/lib/img/equipaNaoExiste.png" alt="pdf" />';
                        colunasFinalistas.hide();
        } else{
            //no caso de outro erro
            html = '<img src="'+baseUrl+'/lib/img/erroEstranho.png" alt="pdf" />';
        }


                if (html != ''){
                    divMsg.html(html);
                    divMsg.show();
                }



    }, 'json');

}

4 个答案:

答案 0 :(得分:2)

冒着说明问题的风险,如果没有调用回调方法,则表示调用不成功。

$ .post是完整$ .ajax的简写。尝试使用$ .ajax并实现错误函数;这将显示您是否丢失了代码丢失的任何错误。

有关$ .ajax的更多信息,请访问:$.ajax

$.ajax({
    type: 'POST',
    url:  baseUrl+"/index/voto",
    data: //any required params go here,
    success: function(data, textStatus, jqXHR) {
        debugger;//hooray it worked!
    },
    error: function(jqXHR, textStatus, errorThrown) {
        debugger;//there was an error
    },
    dataType: //type of data you are expecting back from the server
});

答案 1 :(得分:1)

$.post功能中的第三个参数是成功回调。因此,如果它在开发人员服务器而不是您的生产服务器上正常工作,那么您从服务器获得的响应就会出现问题。你有没看过来自服务器的响应,因为你的ajax请求没有成功。

检查您从服务器获得的响应(如果有)和/或在提交$.post时检查服务器上是否有任何操作。

答案 2 :(得分:1)

试试这个,并告诉我们你得到了什么:

var vote = $.post(baseUrl+"/index/voto",{id:eid},function(e){
    alert('after post');
});
vote.error(function(e){
    alert(e.statusText);
});

答案 3 :(得分:0)

似乎请求在您的开发服务器中失败了。首先,我建议在第一个警报中显示baseUrl,以确保地址正常。如果地址似乎没问题,请在执行$ .post调用之前设置一个函数来处理$ .ajaxSetup或$ .ajaxError的错误

$.ajaxError(error: function (event, jqXHR, ajaxSettings, thrownError){
  //try to find out the error
});

更多关于$ .ajaxError here

此外,您可以尝试使用fiddler检查来自服务器的请求

相关问题