抑制和添加ajax调用的参数
Suppressing and adding parameters for ajax call
我正在尝试为两个单独的单击事件进行ajax调用。不同之处在于,对于第二次单击事件,变量testOne不应该是调用的一部分,而是一个新变量。我该如何处理这个问题?
var varOne = '';
var varTwo = '';
var varThree = '';
function testAjax(){
$.ajax({
type: "POST",
dataType: 'html',
url: "http://someblabla.php",
data: {
testOne: varOne,
testTwo: varOne
}
}).done(function(data) {
$('.result').html(data);
});
}
$('.clickOne').click(function(){
varOne = 'xyz123';
varTwo = '123hbz';
testAjax();
});
$('.clickTwo').click(function(){
//varOne = 'xyz123'; // I dont need this for this click
varTwo = '123hbz';
varThree = 'kjsddfag'; // this gets added
testAjax();
});
<div class="clickOne"></div>
<div class="clickTwo"></div>
制作一些像这样的
function testAjax(data){
$.ajax({
type: "POST",
dataType: 'html',
url: "http://someblabla.php",
data: data,
}).done(function(data) {
$('.result').html(data);
});
}
$('.clickOne').click(function(){
var data= {
varOne: 'xyz123',
varTwo: '123hbz',
}
testAjax(data);
});
$('.clickTwo').click(function(){
var data= {
varThree : 'kjsddfag',
varTwo: '123hbz',
}
testAjax(data);
});
<div class="clickOne"></div>
<div class="clickTwo"></div>
您也可以用最少的代码行以其他方式做同样的事情,您可以在单击事件时调用ajax并根据触发单击事件的元素传递数据。这样的:
$('.ajax').click(function(e){
if($(this).hasClass('clickOne')){
var data= { varOne: 'xyz123'; varTwo: '123hbz'; }
}else{
var data= { varThree : 'kjsddfag'; varTwo: '123hbz'; }
}
$.ajax({
type: "POST",
dataType: 'json',
url: "http://someblabla.php",
data: data,
}).done(function(data) {
$('.result').html(data);
});
e.preventDefault();
});
<div class="ajax clickOne"></div>
<div class="ajax clickTwo"></div>
通过这种方式,您可以为不同的数据变量设置尽可能多的条件。
你应该这样做:
function testAjax(data){
$.ajax({
type: "POST",
dataType: 'html',
url: "http://someblabla.php",
data: data
}).done(function(data) {
$('.result').html(data);
});
}
$('.clickOne').click(function(){
var data {
varOne = 'xyz123',
varTwo = '123hbz'
}
testAjax(data);
});
$('.clickTwo').click(function(){
var data = {
varTwo = '123hbz',
varThree = 'kjsddfag'
}
testAjax(data);
});
<div class="clickOne"></div>
<div class="clickTwo"></div>
这种方式可以绝对控制将哪些变量添加到哪个ajax调用。你不应该使用全局变量,除非你真的需要它们是全局的,但似乎不是这样。
您可以将任何JavaScript对象传递给ajax
方法的data
参数
我只是想添加一些东西。我经常将value隐藏在按钮标签的value属性中,以产生类似这样的结果。
我还没有能够测试这个,当然,但我认为这是值得一提的。
jquery:var fields = '';
function testAjax(){
$.ajax({
type: "POST",
dataType: 'html',
url: "http://someblabla.php",
data: fields
}).done(function(data) {
$('.result').html(data);
});
}
$('#btn').click(function(){
var varCount = 0;
var vars = $(this).val().split('|');
$.each( vars, function( key, value ) {
varCount++;
fields = fields + 'var' + varCount + '=' + value + '&';
});
fields = fields.slice(0,-1);
$(this).val('123hbz|kjsddfag');
testAjax();
});
html: <button id="btn" value="xyz123|123hbz"></button>
更优化、更简洁的版本-
var varTwo='junk1'
var varOne='junk2'
var varThree='junk3'
function testAjax(data){
$.ajax({
type: "POST",
dataType: 'html',
url: "http://someblabla.php",
data: data,
}).done(function(data) {
$('.result').html(data);
});
}
$('.ajaxClick').click(function(){
var data={};
if(this.classList.contains('clickOne')){
data.varOne=varOne;
data.varTwo=varTwo;
}else{
data.varThree=varThree;
data.varTwo=varTwo;
}
testAjax(data);
});
<div class="ajaxClick clickOne"></div>
<div class="ajaxClick clickTwo"></div>
相关文章:
- 如何在从排序方法调用参数时将其传递给回调
- 使用JavaScript拦截方法调用参数
- 调用参数数量未知的回调
- JavaScript:按名称调用参数计算
- 我可以通过beforeSent事件更改jQuery.ajax的函数调用参数(在数据中发送)吗?
- 从 php 调用参数化的 JavaScript 函数
- 从 java 脚本调用参数化 ms-access 函数的语法是什么?
- 创建一个新函数并从另一个函数调用参数
- 获取javascript中getter的调用参数
- 如何将变量传递给属于函数调用参数一部分的函数
- 在babel加载程序中将其更改为未定义的自调用参数
- 调用参数列表的函数
- 从函数调用参数
- QtScript可以't调用参数类型为“”的函数;Q字符串&&”;
- 无用的setTimeout调用(参数周围缺少引号?)
- iOS: evaluateJavaScript将不会调用参数包含换行符的函数
- 如何在php中从HTML或javascript调用参数
- debounce获取前一个函数的调用参数
- Yii CGridView按钮-调用参数化javascript函数
- Javascript:如何动态更改函数调用参数