【发布时间】:2015-06-22 19:31:27
【问题描述】:
我在使用 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 - 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')]);
}
成功后,我点击一个按钮,从 Bootstrap 打开一个“模型”。
一切正常,但会话总是返回之前点击的国家,无论我点击多少其他国家,它都不会改变。
我不知道问题是什么,尝试了 e.preventdefault()、cache: false 和其他一些选项,似乎没有任何解决方法。
【问题讨论】:
-
首先检查您的处理程序
onSecondClick是否被调用。 BTW 听起来像一个点击处理程序,那么你如何绑定它呢?你是否以某种方式替换了这个元素? -
您发布的代码没有使用您查询的国家信息。具体来说,ajax 调用中
successhandler 的data参数仍未使用。 -
Wolff - 我对 js 和 ajax 有点陌生,所以我不知道你在说什么,点击国家(每次点击都会打开模型)会话的价值未设置。
-
collaspar - Input::get('country') IS $_POST['country'],这就是我使用它的方式。
-
你确定 session.php 正在像它应该的那样生成一个新会话吗?如果是,而且是模态中显示的信息永远不会改变,我可能知道原因。
标签: javascript php jquery ajax twitter-bootstrap