Javascript AJAX只发送post请求一次

Javascript AJAX只发送post请求一次,javascript,php,jquery,ajax,twitter-bootstrap,Javascript,Php,Jquery,Ajax,Twitter Bootstrap,我对ajax有一个问题,因为它只发送一次我的请求,我有一个cssmap插件,该插件有onSecondClick选项,当我点击它两次时,我的post请求将一些数据发送到sessions.php,在session.php中我删除了会话,然后我又放了一个 js行: 'onSecondClick' : function(e){ var regionName = e.children("A").eq(0).text(), regionHref = e.children("

我对ajax有一个问题,因为它只发送一次我的请求,我有一个cssmap插件,该插件有onSecondClick选项,当我点击它两次时,我的post请求将一些数据发送到sessions.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-url是正确的,这是文件的url,会话已设置,但仅设置一次,不会升级

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

}
echo $countries[Input::get('country')];
在成功的时候,我点击一个按钮,它会从Bootstrap打开一个“model”

一切正常,但会话始终返回上一个单击的国家,并且无论我单击其他国家多少次,它都不会改变

我不知道问题出在哪里,尝试了e.preventdefault()、cache:false和其他一些选项,似乎没有任何东西可以解决它。

很难从您的描述中看出问题出在哪里,但如果问题是关于表示的(即,您可以验证session.php是否起作用,但模式仍然显示错误的信息),这可能就是原因

默认情况下,引导模态只填充一次内容。之后,它将使用.toggle显示或隐藏

如果要更新信息,必须首先清除它:

$('body').on('hidden.bs.modal', '.modal', function () {
    $(this).removeData('bs.modal');
});
这将在隐藏/关闭时清除类为
modal
的modals中的任何内容。当然,您也可以使用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的末尾添加如下内容:

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

}
echo $countries[Input::get('country')];

(php不是我真正喜欢的东西。不过我认为这是正确的)

首先检查是否调用了处理程序
onSecondClick
。顺便说一句,听起来像是一个点击处理程序,那么如何绑定它呢?是否以某种方式替换此元素?您发布的代码不使用您查询的国家/地区信息。具体地说,ajax调用中的
data
参数到
success
处理程序仍然没有使用。Wolff-我对js和ajax有点陌生,所以我不知道你在说什么,国家被单击(模型每次单击都会打开)会话的值没有设置。collaspar-Input::get('country')是$\u POST[“国家”],这就是我使用它的方式。你确定session.php会像它应该的那样生成一个新的会话吗?如果是,并且模式中显示的信息永远不会更改,我可能知道原因。它不起作用,值不会更改,刷新后,会显示刷新前单击的最后一个值,因此我无法按原样刷新页面好的,还有其他方法可以将该值传递给php吗?@user3052629尝试我的新添加内容,看看是否可以让php文件将数据返回到ajax。警报返回单击城市的名称,我在模型中包含php页面,模型在1秒后打开和关闭。因此,似乎ajax可以工作,因为它返回了正确的名称(不仅仅是类名,还有session.php中数组的名称)但当我尝试包含会话或使用会话时,我得到一个错误,即国家/地区输入不存在。@user3052629那么是的,这消除了任何其他问题。问题在于会话的设置/获取。我知道这样处理会话是不合适的。它需要在实际的“清除”和“重新设置”之间请求。也许只覆盖现有会话值更好?(跳过删除)