AJAX只发送一次post请求

时间:2015-04-16 11:54:37

标签: javascript php jquery ajax twitter-bootstrap

我遇到了ajax的问题​​,因为它只发送一次我的请求,我有一个cssmap插件,而且该插件有onSecondClick选项,这使我能够在我点击两次时执行某些操作,我的帖子请求发送一些数据到session.php,在session.php我删除会话,然后我再放一个。

js行:

'onSecondClick' : function(e){

        var regionName = e.children("A").eq(0).text(),
        regionHref = e.children("A").eq(0).attr("href"),
        regionClass = e.attr("class").split(" ")[0];

        if(regionClass == "eu13" || regionClass == "eu16" || regionClass == "eu47"){
            //open model success

            $.ajax({
                type: "POST",
                url: 'session',
                data: { country : regionClass },
                cache: false,
                success: function(data){
                    $( "#success" ).click();
                }
            });

            //$( "#success" ).click();
        }else{
            //open model error
            $( "#error" ).click();
        }
    },

PS - 网址是正确的,即文件的网址,会话已设置,但只有一次且不会更新。

session.php文件:

if(Input::get('country')){

    $countries = array(
        'eu13' => 'france',
        'eu16' => 'germany',
        'eu47' => 'united kingdom',
        //end of playable countries, the rest is bots!
        'eu5' => 'belgium',
        'eu27' => 'luxembourg',
        'eu33' => 'netherlands',
        'eu44' => 'switzerland',
        'eu20' => 'ireland'
    );
    if(Session::get('selected');){
        Session::delete('selected');
    }
    Session::put('selected',$countries[Input::get('country')]);

}

在成功之后,我点击一个按钮,打开一个"模型"来自Bootstrap。

一切正常,但会话总是返回上一个点击的国家/地区,无论我点击其他国家/地区多少,它都不会改变。

我不知道问题是什么,尝试了e.preventdefault(),cache:false以及其他一些选项,似乎无法解决它。

1 个答案:

答案 0 :(得分:0)

很难说出你的描述问题在哪里,但如果是关于演示文稿(即你可以验证session.php是否能完成它的工作,但模态仍然提供了错误的信息),这可能是原因。

默认情况下,Bootstrap模式仅填充内容一次。之后,它将使用.toggle来显示或隐藏。

如果您想更新信息,则必须先清除它:

$('body').on('hidden.bs.modal', '.modal', function () {
    $(this).removeData('bs.modal');
});

当隐藏/关闭时,这将清除类modal的模态中的任何内容。您当然也可以使用ID选择器,例如#myModal

编辑:

试试这个ajax。警报返回了什么?

$.ajax({
    type: "POST",
    url: "session",
    data: { "country": regionClass },
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    cache: false,
    success: function(data){
        alert(data);
        $("#success").click();
    }
});

并在session.php:

的末尾添加这样的内容
echo $countries[Input::get('country')];

(php不是我真的。我认为这是正确的)