2015-07-03 63 views
0
<html> 
    <head> 
     <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 

$('#my-form') 
    .submit(function(e) { 
    $.ajax({ 
     url: 'http://111.111.111.111:5008/form', 
     type: 'POST', 
     data: new FormData(this), 
     processData: false, 
     contentType: false, 
     success: function (data) { 
     alert("SUCCESS"); 
     }, 
     error: function (textStatus, errorThrown) { 
     alert("FAILED"); 
    } 
    }); 
    e.preventDefault(); 
    }) 


}); 
</script> 
    </head> 
    <body> 
     <div> 
      <form id="my-form"> 
        <div> 
         File: 
          <input type="file" name="file" /> 
        </div> 
        <div> 
         <button type="submit">Submit</button> 
        </div> 
      </form> 
     </div> 
    </body> 
</html> 

我需要提交表單並查看它是否成功。該文件正在我的服務器端上傳,沒有錯誤,但阿賈克斯說它失敗(失敗的警報顯示)。我打開控制檯,它給人的錯誤:Jquery ajax不工作 - 否'訪問控制允許來源'

XMLHttpRequest cannot load http://111.111.111.111:5008/form. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://111.111.111.111' is therefore not allowed access. 

所以窗體被上傳,因爲我可以看到它是從我的數據庫。我GOOGLE了錯誤,似乎我可以在我的AJAX中使用jsonp作爲數據類型。我試過這個,但它不起作用,但我寧願不將它用於安全風險,我也不需要這種數據類型。

+0

爲什麼downvote? – user2924127

+1

我沒有看到下降投票的理由這個問題..嘿夥計,我看到你的代碼中沒有錯誤,我已經檢查過它。提交後它完美地發佈表單內容。我認爲你的服務存在一個問題,寫在http://111.111.111.111:5008/form .. ajax等待特定時間段的響應,如果它不會那麼它會拋出錯誤事件....或檢查此http ://stackoverflow.com/questions/15412226/access-control-allow-origin-error你可能需要設置代理服務器,以重定向到實際服務器的Ajax調用(你必須編寫重寫規則,以重定向).Upvoted ;) –

回答

0

我發現了這個問題。從我的服務器迴應需要修改標題。標題需要允許所有的來源。這裏是Java(vertx.io)的一個例子。

ctx.response().putHeader("Access-Control-Allow-Origin ", "*"); 

一旦我將這添加到我的服務器代碼,請求和響應按需工作。

相關問題