2013-03-13 2 views
0

JavaScript:Ajax отправить сообщение, и отправка Canvas

var username = 'sami'; 
var myImage = canvas.toDataURL("image/png"); 
var ajax = new XMLHttpRequest(); 
ajax.open("POST", "Pic.php", false); 
ajax.setRequestHeader('Content-Type', 'application/upload'); 
ajax.send(myImage); 
ajax.send("q=" + encodeURIComponent(username)); 

PHP:

<? php 
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) { 
    $user = $_POST['q']; 
    $comp = $user.".png"; 
    $imageData = $GLOBALS['HTTP_RAW_POST_DATA']; 
    $filteredData = substr($imageData, strpos($imageData, ",") + 1); 
    $unencodedData = base64_decode($filteredData); 
    $fp = fopen($comp, 'wb'); 
    fwrite($fp, $unencodedData); 
    fclose($fp); 
} ?> 

Это код, проблема в том, что я не мог получить пользователь с поста, когда изображение сохраняет его «.png» только ....

ответ

0

Отправьте свой запрос только один раз и поместите обе переменные в одну и ту же отправку. Не имеет смысла посылать дважды с различными переменными ...

Вы также должны проверить, существует ли переменная, serveride, isset ($ _ POST ['q']).

Другим решением может быть добавление пользователя в переменную GET в URL, как: «? Pic.php д =» + имя пользователя и обрабатывать переменную GET для имени пользователя вместо

0

Как apelsinapa говорит, вы должны упаковать их вместе:

ajax.send("img=" + myImage + "&user=" + user); 

Это, конечно, будет означать, что вы аннулированию «приложения/загрузки», потому что теперь вы вернулись к форме кодирования.

Так что, как уже упоминалось, если вы разрешаете параметр запроса ($_GET), указывающий имя пользователя или предпочтительное имя файла, или что-то еще, вы можете сохранить загрузку своего приложения, а также иметь имя файла.

ajax.open("POST", "Pic.php?user=" + user + "&fname=" + filename, true); 
// leave headers as you have set them 
// event-handlers here 
ajax.send(myImage); 
Смежные вопросы