上传时获取唯一号码

Getting a unique number at upload

本文关键字:唯一 号码 获取      更新时间:2023-09-26

我有一个上传脚本,它在用户点击提交时运行,看起来像这样:

<script type="text/javascript">
//<![CDATA[
$(function() {
    // Initialiseer uploadifive
    $('#file_upload').uploadifive({
        'auto'              : false,
        'checkScript'       : '/uploadifive/Sample/check-exists.php',
        'onFallback'        : function () {
                                  window.location = '/home.php';
                              },
        'method'            : 'post',
        'queueID'           : 'queue',
        'uploadScript'      : '/upload/uploadifive.php',
        'removeCompleted' : true,
        'onUploadComplete'  : function (file, data) {
                                  console.log(data);
                              }
    });
    // Hang een click-event aan de knop
    $('#subby').on('click', function () {
        // Werk formData van uploadifive bij met de betreffende waarden
        $('#file_upload').data('uploadifive').settings.formData = {
            'timestamp'   : '<?php echo $timestamp;?>',
            'token'       : '<?php echo md5('unique_salt' . $timestamp);?>',
            'projectnr'   : $('input[name=projectnr]').val(),
            'gebruiker'   : $('input[name=gebruiker]').val(),
            'gebruikerid' : $('input[name=userId]').val(),
            'mapId'       : $( "#mapId option:selected" ).val(), // moet dit niet val() zijn???
            'uploadbash'  : '<?php echo $uploadbash; ?>',
            'upload_reden' : $( "#upload_reden option:selected" ).val(),
            'todo'        : $("input[name=todo]:checked").val(),
            'lid'         : $('input[name="lid[]"]:checked').serialize()
        };
        // Voer de upload uit
        $('#file_upload').uploadifive('upload');
    });
});
//]]>
</script>

现在我想修改上面的内容并构建以下内容:

当脚本运行时,它必须在后台运行页面randomnumber.php,并将收到的数字作为"uploadbash"发送回:"

这可能吗?我该怎么做?


它不起作用,我现在这样做:

<script type="text/javascript">
//<![CDATA[
$(function() {
    // Initialiseer uploadifive
    $('#file_upload').uploadifive({
        'auto'              : false,
        'onFallback'        : function () {
                                  window.location = '/home.php';
                              },
        'method'            : 'post',
        'queueID'           : 'queue',
        'uploadScript'      : '/upload/uploadifive.php',
        'removeCompleted' : true,
        'onUploadComplete'  : function (file, data) {
                                  console.log(data);
                              }
    });
    // Hang een click-event aan de knop
    $('#subby').on('click', function () {
        // Werk formData van uploadifive bij met de betreffende waarden
        $('#file_upload').data('uploadifive').settings.formData = {
              'checkScript'       : 
$.ajax({
      url: '/upload/number.php',
      type: 'POST',
      data: {search: "beeeeeeeh"}
    }).done(function () {
                alert("test");
                $("#result").html(data);   
                 }),            
            'timestamp'   : '<?php echo $timestamp;?>',
            'token'       : '<?php echo md5('unique_salt' . $timestamp);?>',
            'projectnr'   : $('input[name=projectnr]').val(),
            'gebruiker'   : $('input[name=gebruiker]').val(),
            'gebruikerid' : $('input[name=userId]').val(),
            'mapId'       : $( "#mapId option:selected" ).val(), // moet dit niet val() zijn???
            'uploadbash'  : '<?php echo $uploadbash; ?>',
        'upload_reden' : $( "#upload_reden option:selected" ).val(),
        'todo'        : $("input[name=todo]:checked").val(),
            'lid'         : $('input[name="lid[]"]:checked').serialize(),
        'number'      : $("#result").html(data)
        };
        // Voer de upload uit
        $('#file_upload').uploadifive('upload');
    });
});
//]]>
</script>

所以我添加了:

'checkScript'       : 
    $.ajax({
          url: '/upload/number.php',
          type: 'POST',
          data: {generateNumber: "yes"}
        }).done(function () {
            alert("test");
                    $("#result").html(data);   
                     }),        

和:

'number'      : $("#result").html(data)

但当我点击"上传"时,我在firebug中得到了这个:

ReferenceError:未定义数据$("#result").html(数据);}),

警报"测试"确实弹出。

您的问题是这个

    {'checkScript'       : 
    $.ajax({
      url: '/upload/number.php',
      type: 'POST',
      data: {search: "beeeeeeeh"}
    }).done(function () {})

不会为checkScript指定您期望的内容。它是一个异步调用,因此您必须等待它返回(在done()或success()中),然后才能使用它将提供的数据。

 // Hang een click-event aan de knop
    $('#subby').on('click', function () {
        // Werk formData van uploadifive bij met de betreffende waarden
        //when we click, do a call to the backend...
        $.ajax({
           url: '/upload/number.php',
           type: 'POST',
           data: {generateNumber: "yes"}
        }).success(function(numberPHPResult){ //***
        //and when it comes back, populate the form
           $('#file_upload').data('uploadifive').settings.formData = {
            'checkScript': numberPHPResult, //***
            'timestamp'   : '<?php echo $timestamp;?>',
            'token'       : '<?php echo md5('unique_salt' . $timestamp);?>',
            'projectnr'   : $('input[name=projectnr]').val(),
            'gebruiker'   : $('input[name=gebruiker]').val(),
            'gebruikerid' : $('input[name=userId]').val(),
            'mapId'       : $( "#mapId option:selected" ).val(), // moet dit niet val() zijn???
            'uploadbash'  : '<?php echo $uploadbash; ?>',
            'upload_reden' : $( "#upload_reden option:selected" ).val(),
            'todo'        : $("input[name=todo]:checked").val(),
            'lid'         : $('input[name="lid[]"]:checked').serialize()
           };
           // Voer de upload uit
           $('#file_upload').uploadifive('upload');
       })
    });

此外,如果你想提供更多信息,你应该编辑你的问题,而不是发布答案。

最后,如果你想更深入地学习Javascript,Douglas Crockford就是你的选择

http://javascript.crockford.com/网上的东西http://www.amazon.co.uk/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742//书籍https://www.youtube.com/playlist?list=PL7664379246A246CB//视频

我认为您必须传递作为done()方法的参数返回的对象。所以done(data)尝试使用:

$.ajax({
    url: '/upload/number.php',
    type: 'POST',
    data: {generateNumber: "yes"}
}).done(function(data) 
{
    console.log(data);
    alert("test");
    $("#result").html(data.responseText); //If I'm not wrong data is a XMLHttpRequest object    
});

甚至更好:

$.ajax({
    url: '/upload/number.php',
    type: 'POST',
    data: {generateNumber: "yes"},
    success: function(data) 
    {
        console.log(data);
        alert("test");
        $("#result").html(data.responseText); //If I'm not wrong data is a XMLHttpRequest object    
    },
    error: function(xhr, ajaxOptions, thrownError)
    {
        alert(xhr.status);
        alert(thrownError);
    });