jquery ajax PUT将本地url添加到传递的url

时间:2017-09-07 07:49:59

标签: javascript jquery ajax

我正在尝试通过ajax将文件上传到s3。

这是我的代码:

$.ajax({
      type: 'PUT',
      url: url,
      contentType: application/octet-stream,
      processData: false,
      crossDomain: true,
      data: file,
    })
    .success(function() {
      alert('File uploaded');
    })
    .error(function() {
      alert('File NOT uploaded');
      console.log( arguments);
    });

它无法正常工作,因为它会在实际网址前面添加http://localhost:1337/api/v1,因此会失败并向我404: Not found error

Error screenshot

同样的事情如果我使用它:

const xhr = new XMLHttpRequest();
  xhr.open('PUT', url);
  xhr.onreadystatechange = () => {
    if(xhr.readyState === 4){
      if(xhr.status === 200){
        console.log('200 status')
      }
      else{
        alert('Could not upload file.');
      }
    }
  };
  xhr.send(file);

2 个答案:

答案 0 :(得分:0)

你试过这个吗..

$.ajax({
  type: 'POST',
  url: url,
  contentType: application/octet-stream,
  processData: false,
  crossDomain: true,
  data: file,
  success: function(data) {
  alert('File uploaded');
  }
  error: function(data) {
  alert('File NOT uploaded');
  console.log( arguments);
  }
});

答案 1 :(得分:0)

您必须urlEncode您的url参数是'url'。 使用encodeURI()或encodeURIComponent(), 你的例子应该是:

var url =“http://localhost:1337/api/v1?myurl=”+ encodeURIComponent(“https // ntnx.portal ......”);

在服务器端脚本获取帖子后,通过参数'myurl'

获取您的网址