Ответы пользователя по тегу JavaScript
  • Как починить json?

    rabbit418
    @rabbit418
    23 yo Designer from Ukraine
    Ну самое простое можно $template прогнать через urlencode(), а на клиенте разобрать обратно через decodeURIComponent().

    <?php
    $template = implode("\n", [
    	'<!DOCTYPE html>',
    	'<html lang="en">',
    	'<head>',
    		'<meta charset="UTF-8">',
    		'<title>Document</title>',
    	'</head>',
    	'<body>',
    		'<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima consectetur placeat, doloribus, qui eaque quas laborum fuga voluptas dolorum distinctio illo quibusdam quia cum, inventore quos. Quo ipsam sed asperiores.</p>',
    	'</body>',
    	'</html>'
    ]);
    
    $response = array(
        "html" => urlencode($template),
        "show" => 'true'
    );
    header('Content-type: application/json; charset=utf-8');
    $json = json_encode($response);
    
    echo $json;
    ?>


    <script>
    var data = new FormData();
    data.append("foo", "bar");
    
    var xhr = new XMLHttpRequest();
    xhr.withCredentials = true;
    
    xhr.addEventListener("readystatechange", function () {
      if (this.readyState === this.DONE) {
        console.log(decodeURIComponent(this.responseText));
      }
    });
    
    xhr.open("GET", "/ajax");
    
    xhr.send(data);
    </script>
    Ответ написан
    Комментировать
  • Как эмулировать запрос FormData из PHP?

    rabbit418
    @rabbit418
    23 yo Designer from Ukraine
    Можно например так, с помощью Curl.

    <?php
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
      CURLOPT_URL => "/ajax.php",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"foo\"\r\n\r\nbar\r\n-----011000010111000001101001--\r\n",
      CURLOPT_HTTPHEADER => array(
        "content-type: multipart/form-data; boundary=---011000010111000001101001"
      ),
    ));
    
    $response = curl_exec($curl);
    $err = curl_error($curl);
    
    curl_close($curl);
    
    if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      echo $response;
    }


    А еще можно вот так, с помощью HTTP v2:
    <?php
    
    $client = new http\Client;
    $request = new http\Client\Request;
    
    $body = new http\Message\Body;
    $body->addForm(array(
      'foo' => 'bar'
    ), NULL);
    
    $request->setRequestUrl('/ajax.php');
    $request->setRequestMethod('POST');
    $request->setBody($body);
    
    $client->enqueue($request)->send();
    $response = $client->getResponse();
    
    echo $response->getBody();
    Ответ написан
    1 комментарий
  • Как сделать автопостинг комментариев на youtube?

    rabbit418
    @rabbit418
    23 yo Designer from Ukraine
    Комментировать