$.ajaxFileUpload({
url:"http://192.168.0.222:8080/Erp_V0.1/admin/upload/uploader.php", //处理图片的脚本路径
type: 'post', //提交的方式
data: upload_arr,//自定义参数
secureuri :false, //是否启用安全提交
fileElementId :id, //file控件ID
dataType : "jsonp",//数据类型为jsonp
jsonp: "jsonpCallback",//服务端用于接收callback调用的function名的参数
success : function (data){ //提交成功后自动执行的处理函数
alert(1111);
alert(data);
},
error:function(data,status,e){
alert(2222);
alert(e);
alert(JSON.stringify(data));
alert(status);
}
})
jsonp クロスドメインは get モードのみをサポートします。フロントエンドが post モードに設定されている場合でも、自動的に get モードに変換されます。
リーリーjsonp の実装メソッドは、実際にはスクリプトリクエストアドレスと同じですが、ajax の jsonp がそれをカプセル化する点が異なります。ご想像のとおり、jsonp は POST メソッドをサポートしていません。したがって、サーバー側のコードで post メソッドが使用されている場合、リクエストはできません。
もちろん、クロスドメイン通信に post メソッドを強制的に使用する場合は、何もできません。
クライアント側の変更:
``
追加:crossDomain: true
変更: dataType: "json"
``
サーバー側の追加:
それは可能ですが、デメリットがあり、リクエストにかかる時間が比較的長くなります。メリットとデメリットを自分で比較検討してください。
最後に、Stackoverflow に関連する質問投稿を添付します:
http://stackoverflow.com/ques...
ドメイン間で Get for Jsonp を使用したことを覚えています。ただし、どうしても投稿したい場合は、http://www.jb51.net/article/6... があります。私は試していません。
まず、クロスドメインとjsonp関連の知識を整理しましょう
jsonpはscriptタグで作られています
投稿をクロスドメインにする場合は、バックエンドにAccess-Control-Allow-Originを追加する必要があります