如何根据beforesend()函数的返回值更改ajax函数的url?

时间:2015-06-05 07:23:11

标签: javascript jquery ajax

我想在jquery ajax中的beforesend()内运行一个函数。根据该函数的返回值,我想更改ajax请求的URL。有关示例,请参阅下文。

如果myFunction()返回的值大于1,我想运行url1,否则我想运行url2。如何实现?

myFunction()给出的值大于1.但是ajax总是运行url2。

$.ajax({
    type: "POST",
    data: {
        fname: $('#com').val()
    },
    dataType: "json",
    beforeSend: function () {
        myFunction($('#com').val())
    },
    url: (myFunction($('#com').val()) > 1) ? url1 : url2,
    success: function (data) {
        if (data == 'success') {
            window.location.href = 'index.php?r=site/index';
        } else {
            alert("Already registered email");
        }
    },
    failure: function (errMsg) {
        alert(errMsg);
    }
});

3 个答案:

答案 0 :(得分:0)

试试这个

$.ajaxSetup({
    beforeSend: function(jqXHR, settings) {
       settings.url ="new Url";
    }
});

答案 1 :(得分:0)

创建一个类似于:

的全局变量
var urlToSend;

然后在beforeSend

中分配
$.ajax({
    type: "POST",
    data: {
        fname: $('#com').val()
    },
    dataType: "json",
    beforeSend: function () {
        urlToSend=myFunction($('#com').val()) > 1 ? url1 : url2;
    },
    url: urlToSend,
    success: function (data) {
        if (data == 'success') {
            window.location.href = 'index.php?r=site/index';
        } else {
            alert("Already registered email");
        }
    },
    failure: function (errMsg) {
        alert(errMsg);
    }
});

答案 2 :(得分:0)

$.ajax({
    type: "POST",
    data: {
        fname: $('#com').val()
    },
    dataType: "json",
    beforeSend: function () {
        url = myFunction(parseInt($('#com').val())) > 1 ? url1 : url2;
    },
    url: url,
    success: function (data) {
        if (data == 'success') {
            window.location.href = 'index.php?r=site/index';
        } else {
            alert("Already registered email");
        }
    },
    failure: function (errMsg) {
        alert(errMsg);
    }
});