2017-08-11 15 views
0

に置き換えてください。以下のスクリプトは、画像をベース64に変換します。変換された文字列をデータベースに挿入する前にPHP変数に置きます。私が達成しようとしています何JSの結果をPHPの変数

私のJS

function uploadFile() { 

    if (this.files && this.files[0]) { 

    var FR= new FileReader(); 

    FR.addEventListener("load", function(e) { 
     document.getElementById("img").src  = e.target.result; 
     document.getElementById("b64").innerHTML = e.target.result; 
    }); 

    FR.readAsDataURL(this.files[0]); 
    } 

} 

document.getElementById("inp").addEventListener("change", readFile); 

私のhtml

<input id="inp" type='file'> 
<p id="b64"></p> 
<img id="img" height="150"> 

「=私はidのpタグに今表示していた結果の場所ですPHP変数$ varImageのb64。

.innerHTML = e.target.result; 

私はAJAXでのみ行うことができるオンラインを読んだが、その場合にajaxの使い方がわからないのですか?それとも別の方法で行うことができますか?

+0

あなたはどのようにの説明とexampesためhttp://api.jquery.com/jquery.ajax/を参照してください、jQueryのようなライブラリを使用することができますajaxを使用します。 – user1915746

+0

@ user1915746私はajaxを使うべきですか?それとも別の方法で行うことができますか? – mirvatJ

+0

'

'を使って、base64をクライアントからサーバに送信することもできます。または、ファイルを( ''も使用して)サーバーにアップロードし、サーバー側でbase64文字列を計算します。 – user1915746

答えて

0

アヤックスがなければ、あなたは隠された入力値に生成された値を配置し、単純にフォームを送信するので、PHPスクリプトの処理形態は$でそれを得るだろうことができます_POST ['b64']変数。

HTML

<input id="inp" type='file'> 
    <input type="hidden" id="b64" value=""> 
    <img id="img" height="150"> 

JS

 function readFile() { 

     if (this.files && this.files[0]) { 

     var FR= new FileReader(); 

     FR.addEventListener("load", function(e) { 
      document.getElementById("img").src  = e.target.result; 
      document.getElementById("b64").value = e.target.result; 
     }); 

     FR.readAsDataURL(this.files[0]); 
     } 

    } 
0

はい、AJAXはアップロードのための最も簡単な方法の1つです。ここでは簡単な方法を簡単に示しています。まず

は、(以下CDNまたはそれをローカルにダウンロードを使用して)あなたの(ジャバスクリプト)コードに戻って今

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 

、あなたのhtmlの<head>でこれを置くことによって、jQueryのが含まれます。たとえば、base64文字列が変数resultにあるとします。 POSTリクエストをPHPサーバ(このサンプルではファイルupload.php)に送信して、リクエスト本体に結果を送信することができます。

$.ajax({ 
    method: "POST", 
    url: "upload.php", 
    data: { img: result } 
}); 

は今、upload.phpでは、これはあなたが必要とするすべてである:

<?php 
    if (isset($_POST['img'])) { 
     $varImage = $_POST['img']; 
    } else { 
     print 'No image sent!'; 
    } 
?> 

そして、あなたが今、あなたが好きなため$varImageを使用することができます。

0

jsスクリプトはクライアントコンピュータ上で実行され、phpはサーバ(ホスト)コンピュータ上で実行されるためです。あなたのjsからあなたのPHPにデータを送信する必要があります。 もちろんjqueryを使用できますが、唯一の解決策ではありません。あなたがjqueryと心地よいものでなければ、あなたはネイティブjsを優先します。もう一つはsolutionです。

AJAXリクエストの例があります:

$.post("mysite/create", 
        { "data": JSON.stringify({'id': id})}, 
        function (data, status) { 
         console.log("Data: " + data + "\nStatus: " + status); 

        }); 
      }); 

がネイティブJS XmlHttpRequestの例があります:

function loadDoc() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
    document.getElementById("demo").innerHTML = this.responseText; 
    } 
    }; 
    xhttp.open("GET", "mysite/create", true); 
    xhttp.send(); 
} 

最後の解決策は、フォームを使用することです:

<form method="post" action="mysite/create"> 
<input name="data"> 
</form> 

いずれの方法でも、データをデータベースに保存するには、その手順を実行する必要があります。

0

ajaxなしで.jsから.phpに変数を送信することはできません。

JS

$.ajax({ 
    url: "", 
    data: { 
     name: "value" 
    } 
}) 

PHP

$data = htmlspecialchars($_GET["name"]); // return "value";  
関連する問題