ここに私の問題があります: オンライン T シャツ サイト API を使用する Web T シャツ デザイナーを使用しようとしています。この問題はアプリケーションとは関係ありませんが、システムを説明するのに役立ちます。このデザイナーは JavaScript でコーディングされており、T シャツ サイトの API を呼び出す php プロキシにリクエストを送信します。スクリプトを含むプロキシと html を Web サーバーにアップロードしたところ、すべて正常に動作しました。
残念ながら、別のドメインから html をロードする必要があります。最初は、これにより同一生成元エラーが発生します。PHPプロキシに追加することで修正しました
header("Access-Control-Allow-Origin: *");
ただし、次のコードから新しいエラーが発生します
this.getShop = function (shopId) {
var shop = null;
$.ajax({
type: "GET",
async: false,
cache: true,
url: this.createUrl(this.baseHttpUrl + "/shops/" + shopId),
dataType: "xml",
crossDomain: true,
success: function(data) {
shop = $(data).find("shop");
},
error:function(xhr,err,other){
alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\nerror: "+err+"\nother: "+other);
alert("responseText: "+xhr.responseText);
}
});
return shop;
};
最初のアラートから得られるのは
readyState: 4
status: 200
error: parsererror
other: Error: Invalid XML: data
最終的な「データ」は XML データであり、xhr.responseText から取得したものと同じです。これは、T シャツ サイトが送信することになっているものとまったく同じであり、完全に有効であるようにも見えます...これにはまだ何か関係があると思いますクロスドメイン設定。エラーは、同じWebサーバーからすべてを実行しても呼び出されないと思われるparseXML jQuery関数から発生します...
編集:これは私がデータとして得るものの例です
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<shop xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://api.spreadshirt.net" xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx" id="xxxxxx">
<name>example</name>
<description>example</description>
<type>CLASSIC</type>
<user xlink:href="http://api.spreadshirt.net/api/v1/users/xxxxxxx" id="xxxxxxx"/>
<country xlink:href="http://api.spreadshirt.net/api/v1/countries/6" id="6"/>
<language xlink:href="http://api.spreadshirt.net/api/v1/languages/2" id="2"/>
<currency xlink:href="http://api.spreadshirt.net/api/v1/currencies/1" id="1"/>
<address xlink:href="http://api.spreadshirt.net/api/v1/shops/420067/address"/>
<passwordRestricted>false</passwordRestricted>
<hidden>false</hidden>
<mandator id="1"/>
<shippingUseCase id="1"/>
<defaultShippingType id="1"/>
<discountSupported>false</discountSupported>
<productTypes xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/productTypes"/>
<printTypes xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/printTypes"/>
<fontFamilies xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/fontFamilies"/>
<productTypeDepartments xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/productTypeDepartments"/>
<shippingTypes xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/shippingTypes"/>
<designCategories xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/designCategories"/>
<designs xlink:href="http://api.spreadshirt.net/api/v1/shops/420067/designs"/>
<articleCategories xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/articleCategories"/>
<articles xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/articles"/>
<products xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/products"/>
<applications xlink:href="http://api.spreadshirt.net/api/v1/shops/xxxxxx/applications"/>
<currencies xlink:href="http://api.spreadshirt.net/api/v1/currencies"/>
<languages xlink:href="http://api.spreadshirt.net/api/v1/languages"/>
<countries xlink:href="http://api.spreadshirt.net/api/v1/countries"/>
<baskets xlink:href="http://api.spreadshirt.net/api/v1/baskets"/>
</shop>
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->