URL字符串在ajax调用返回后发生更改

时间:2019-02-18 20:25:58

标签: javascript ajax url

我一直在为一个问题苦苦挣扎。我无法理解具体情况下发生的原因,而不是其他情况。

我有一个javascript函数,该函数调用PHP脚本将文件上传到服务器(标准代码,已经在使用它并且可以正常工作)。

function upload_picture(fieldID, success, error) {

    var folderName;
    switch (fieldID) {
        case "pop_drawing":
            folderName = "pop_dwg";
            break;
        case "pop_installation":
            folderName = "pop_inst";
            break;
        case "pop_picture":
            folderName = "pop_pict";
            break;
    }

    var file_data = $('#' + fieldID).prop('files')[0];
    var form_data = new FormData();
    form_data.append('folder', folderName);
    form_data.append('file', file_data);
    $.ajax({
        url: 'dbh/upload.php',
        dataType: 'text',
        type: 'POST',
        cache: false,
        contentType: false,
        processData: false,
        data: form_data,
        success: function (response) {
            event.preventDefault();
            console.log (response); // display success response from the PHP script

            if (response.indexOf("yüklendi") > 0) {
                success();
            }
        },
        error: function (response) {
            event.preventDefault();
            console.log (response); // display success response from the PHP script
            error(response);
        }
    });
}

从代码中的多个点调用该函数,除一点之外,该函数正常运行。在它返回的特定时刻,它会将页面URL更改为

http://localhost/pop/#

http://localhost/pop/?pop_drawing=&pop_installation=&pop_picture=Compelis-Logo.jpg&pop_need_special_prod=Hay%C4%B1r&pop_need_application=Hay%C4%B1r&pop_order_made=Evet&pop_approval=4&pop_cost_visible=Hay%C4%B1r#

由于我无法理解的原因。 URL行中的此字符串是网页上的一些参数,我可以在其中按按钮来调用该函数。

调用该函数的代码为:

function uploadPopPicture () {

    if ($('#pop_picture_label').html() !== 'Seçili dosya yok...') {
        upload_picture('pop_picture', 
        function(){
            console.log('Görsel yüklendi...');
        }, 
        function(error){
            console.log('Error:', error);
        });
    }
}

相同的代码(显然具有不同的参数)在程序的其他地方使用并且可以正常工作。

任何想法我可能会缺少的东西。

非常感谢

1 个答案:

答案 0 :(得分:0)

按钮的默认行为是“提交”。如果您未指定任何特定行为,则将执行此操作。因此,无论使用哪种JavaScript,单击它都将提交您的表单。

将属性type="button"添加到按钮HTML中,这将阻止它自动提交表单。