动态AJAX URL javascript

时间:2017-03-06 23:52:41

标签: jquery ajax

如果AJAX工作正常,就像这个

<script type="text/javascript">

var myURL = "";
$(document).ready(function(){


$("#advancedUpload").uploadFile({
    url:myURL,
    allowedTypes:"csv",
    fileName:"myfile"
});


$(".cbs").on('change', function(){
        if($('.cbs:checked').length !== 0){
            myURL = "my.php?action=upload";
            $(".cbs:checked").each(function(){
                myURL += "&" + $(this).attr('name') + "=" + $(this).val() ;
            });
        }else{
        }
            );
    });
});

问题是我想每次检查一个复选框时都要更改var req,而且它也有效,我可以更改变量值。但是我的AJAX仍然指的是变量的初始值。任何人都知道为什么会这样?

感谢。

2 个答案:

答案 0 :(得分:0)

您需要重新启动jQuery上传文件才能更改目标上传网址。它在init $(“#advancedUpload”)。uploadFile({... config ...})上设置了一次,并且没有与它变量的链接。

或者有更好的变体:

$("#advancedUpload").uploadFile({ url: "my.php?action=upload", allowedTypes:"csv", fileName:"myfile", dynamicFormData: function(){ var data = {}; if($('.cbs:checked').length !== 0){ $(".cbs:checked").each(function(){ data[$(this).attr('name')] = $(this).val(); }); } return data; } });

这是你想要的吗?

或者真正更新网址使用API​​方法uploadObj.update({url: updatedUrl}); uploadObj必须是您的$("#advancedUpload").uploadFile({..});

答案 1 :(得分:0)

如果您使用的是jQueryUploadFile插件,则应调用其update()方法更改初始url选项:

$(document)
  .ready(function () {

    var Upload = $("#advancedUpload")
      .uploadFile({
        url: "",
        allowedTypes: "csv",
        fileName: "myfile"
      });

    $(".cbs")
      .on('change', function () {
        if ($('.cbs:checked').length !== 0) {
          var myURL = "my.php?action=upload";
          $(".cbs:checked").each(function () {
            myURL += "&" + $(this).attr('name') + 
                     "=" + $(this).val();
          });
          Upload.update({
            url: myURL
          })
        } else {
          Upload.update({
            url: ""
          })
        }
      });
  });

请注意我还没有对它进行测试,但是,根据我在他们的文档中所读到的,它应该可以正常工作。