我需要检查输入字段的值是否真的唯一。因此,将通过AJAX检查输入值。如果result = 1 - >一切都很好(=唯一值)。 如果result = 0,则表示DB中已存在相同的值,因此必须将输入值修改为“value_X”。 X是一个数字,应该被提出。所以我需要检查修改后的值是否也是唯一的。如果不是这种情况,则x将被引发,直到它是唯一值(result = 1)。
var slug = $('#slug').val();
check_slug(slug);
function check_slug(slug) {
$.ajax({
url: "script.php",
type: "GET",
data: { 'slug': slug },
dataType: "json"
})
.done(function( json ) {
if (json.result==1) {
// slug is ok
}
else {
// add "_X" and check
}
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.warn( "Request Failed: " + err );
});
}
答案 0 :(得分:1)
我建议改为使用这个工作服务器端。让你的API弄清楚slug值应该是什么,并返回它!然后AJAX调用只发生一次,你知道slug最终是什么。
但是,如果您坚持在请求之后发送请求,直到您最终找到合适的slug,那么这应该可以解决问题:
var slug = $('#slug').val();
check_slug(0, slug);
function check_slug(count, slug) {
var numberedSlug = slug;
if(count > 0) {
numberedSlug = slug + "_" + count;
}
$.ajax({
url: "script.php",
type: "GET",
data: { 'slug': numberedSlug },
dataType: "json"
})
.done(function( json ) {
if (json.result == 1) {
// slug is ok
// do what you do with ok slugs
} else {
check_slug(count + 1, slug);
}
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.warn( "Request Failed: " + err );
});
}
编辑:应该注意的是,#编号为“插头”'是成功后的有效slu ..