2016-10-30 25 views
0

私はFabric.jsを使って基本的なデスクトップの壁紙エディタを作成しています。機能の1つは、ユーザーが壁紙を共有できるようにすることです。JQuery AJAX POSTがサーバー上のデータを返さないPHP

このボタンをクリックすると、キャンバスが画像データのURL(data:image/png)に変換されます。

これはすべて問題なく動作しますが、私の問題はajax投稿にあり、データを送信していません。これは、ローカルホスト上で完璧に動作しますが、私のオンラインサーバーで実行しているときに、データを送信しません。テスト目的のために

$("#share").click(function() { 
    if (confirm('Are you sure you want to share your wallpaper? YES | NO')) { 

     // Left out the rest of the Fabric.js canvas stuff here as that works fine 

     var image = canvas.toDataURL('png'), 
     var thumb = canvas.toDataURL('png'); 

     var formData = {'image':image, 'thumb':thumb}; 

     $.ajax({ 
      url: '/ajax/share.php', 
      type: 'post', 
      data: formData, 
      dataType: "json", 
      success: function(response) { 
       console.log(response); 
      } 
     }); 
    } 
}); 

、すべての私のPHPファイルをやっている結果をエコーされます。

$results = 'Image: ' . $_POST['image'] . ' Thumb: ' . $_POST['thumb']; 
echo json_encode($results); exit ; 

私はcontentTypeのとPROCESSDATAが偽であることとともに、JSONと正常とのデータ型の組み合わせを試してみました。もう一度、これらはすべてローカルで動作しますが、サーバー上で実行すると空白の応答があります。 contestTypeを "application/json"として指定しようとしました。

json dataTypeを使用しないと、サーバー上でhtmlページが返されます。

この問題の解決策はありますか?それはサーバーの設定や何かできますか?他の関数に使用している他のすべてのAjaxがうまく動作するので、これはちょうどそのものです。

編集:それはローカルで起動されませんが、サーバー上でこのエラーがトリガされたときに、インデックスHTMLが返され、このエラーで

error: function(xhr, status, error) { 
    console.log(xhr.responseText); 
} 

: は、私は今、アヤックスにエラーを追加しました。したがって、PHPファイルはサーバー上で起動されていません。

他にも役立つものがあります。サーバー上で、share.phpにアクセスしようとすると、ページのステータスは302になります。ただし、通常は200になります。

+0

あなたは完全なURLパスをここで試しましたか? 'url:'/ajax/share.php''?私は 'url:http:// www.yoursite.com/ajax/share.php 'のようになります。また、ブラウザのコンソールでレスポンスコードを確認してください。 –

+0

@Mahfuzul Alam Consoleには空白の応答が表示されます。完全なURLと全く同じ問題を試してみました。 processDataをfalseに設定しないと、ajaxはデータをPHPページにポストしませんが、インデックスhtmlコードを返します。しかし、processDataをfalseに設定すると、データはPHPで未定義のインデックスになるため、返されません。 – ncoll36

答えて

0

たぶん、あなたは

$("#share").click(function() { 
    if (confirm('Are you sure you want to share your wallpaper? YES | NO')) { 

     // Left out the rest of the Fabric.js canvas stuff here as that works fine 

     var image = canvas.toDataURL('png'), 
     var thumb = canvas.toDataURL('png'); 

     $.ajax({ 
      url: '/ajax/share.php', 
      type: 'post', 
      data: {'image':image, 'thumb':thumb}, 
      dataType: "json", 
      success: function(response) { 
       console.log(response); 
      } 
     }); 
    } 
}); 
+0

はい、これはローカルで動作しますが、サーバーに置くとすぐに、そのすべてが返されますが、インデックスのhtmlページです。それは、PHPに提出されていないように。私は 'http:// www.yoursite.com/ajax/share.php'をやってみましたが、何も変わっていません。 – ncoll36

0

を試すことができ、ソリューションを自分で解決しました。サーバーがデータを好きではなかったことが分かります:image/png; base64、私はこれをPHP経由で削除する必要があったので、まずJSを介してこれを削除してから、問題なく送信します。