> 백엔드 개발 > PHP 튜토리얼 > [又拍云]通过jquery调用表单API出现401错误

[又拍云]通过jquery调用表单API出现401错误

WBOY
풀어 주다: 2016-06-06 20:44:54
원래의
1520명이 탐색했습니다.

源代码如下:

<code class="lang-javascript">
  
    <meta charset="utf-8">
    <script src="../qddian/js/jquery.js"></script>
  
  
    <form action="http://v0.api.upyun.com/<?php%20echo%20%24bucket?>" method="post" enctype="multipart/form-data">
      <!-- 需要传递以下三个表单内容 -->
      <input type="hidden" name="policy" value="<?php echo $policy?>">
      <input type="hidden" name="signature" value="<?php echo $signature?>">
      <input type="file" name="file">
      <a id="upload" href="#">上传</a>
    </form>
  

<script>
    $(function(){
        $('a#upload').click(function(){
            //$('form').submit();

            $.post(
                'http://v0.api.upyun.com/<?php echo $bucket; ?>',
                {
                    file: $('input[name=file]').val(),
                    policy: $('input[name=policy]').val(),
                    signature: $('input[name=signature]').val()
                },
                function(data){
                    alert('Data: ' + data);
                }
            );

            return false;
        });
    });
</script>
</code>
로그인 후 복사
로그인 후 복사

通过上述方式则提示"401 Unauthorized sign error",但通过$('form').submit()方式提交则返回200成功。截图如下,请各位大牛协助解决一下,不胜感激!

[又拍云]通过jquery调用表单API出现401错误
[又拍云]通过jquery调用表单API出现401错误
[又拍云]通过jquery调用表单API出现401错误

回复内容:

源代码如下:

<code class="lang-javascript">
  
    <meta charset="utf-8">
    <script src="../qddian/js/jquery.js"></script>
  
  
    <form action="http://v0.api.upyun.com/<?php%20echo%20%24bucket?>" method="post" enctype="multipart/form-data">
      <!-- 需要传递以下三个表单内容 -->
      <input type="hidden" name="policy" value="<?php echo $policy?>">
      <input type="hidden" name="signature" value="<?php echo $signature?>">
      <input type="file" name="file">
      <a id="upload" href="#">上传</a>
    </form>
  

<script>
    $(function(){
        $('a#upload').click(function(){
            //$('form').submit();

            $.post(
                'http://v0.api.upyun.com/<?php echo $bucket; ?>',
                {
                    file: $('input[name=file]').val(),
                    policy: $('input[name=policy]').val(),
                    signature: $('input[name=signature]').val()
                },
                function(data){
                    alert('Data: ' + data);
                }
            );

            return false;
        });
    });
</script>
</code>
로그인 후 복사
로그인 후 복사

通过上述方式则提示"401 Unauthorized sign error",但通过$('form').submit()方式提交则返回200成功。截图如下,请各位大牛协助解决一下,不胜感激!

[又拍云]通过jquery调用表单API出现401错误
[又拍云]通过jquery调用表单API出现401错误
[又拍云]通过jquery调用表单API出现401错误

401的错误是签名的问题:
401:Unauthorized 访问未授权
401:Sign error 签名错误(操作员和密码,或签名格式错误)
sign error:
检查签名格式是否和又拍接口文档中一致。
Unauthorized:
错误检查空间名,操作员,密码等信息填写是否正确,上传路径是否有根“/”开始。
你可以参考下以上错误提示。

这个错误详细查看upyun的API http://www.upyun.com/intro/api-errors.php

另外使用jQuery的post是无法上传文件的,

<code class="lang-javascript">$('input[name=file]').val()
</code>
로그인 후 복사

获取的只是上传文件的本地路径。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿