{"id":749,"date":"2023-12-04T23:59:00","date_gmt":"2023-12-04T14:59:00","guid":{"rendered":"https:\/\/web.cloudfree.jp\/journal\/?p=749"},"modified":"2023-12-07T20:00:34","modified_gmt":"2023-12-07T11:00:34","slug":"xmlhttprequest%e3%81%a7post%e9%80%81%e4%bf%a1%e3%80%82%e5%b8%b8%e3%81%ab%e4%bf%9d%e5%ad%98%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8btextarea%e3%82%92setinterval%e3%81%a8ajax%e3%81%a7%e5%ae%9f","status":"publish","type":"post","link":"https:\/\/web.cloudfree.jp\/journal\/xmlhttprequest%e3%81%a7post%e9%80%81%e4%bf%a1%e3%80%82%e5%b8%b8%e3%81%ab%e4%bf%9d%e5%ad%98%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8btextarea%e3%82%92setinterval%e3%81%a8ajax%e3%81%a7%e5%ae%9f\/","title":{"rendered":"XMLHttpRequest\u3067POST\u9001\u4fe1\u3002\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308btextarea\u3092setInterval\u3068Ajax\u3067\u5b9f\u88c5\u3002"},"content":{"rendered":"<h3 class=\"wp-block-post-title\">XMLHttpRequest\u3067POST\u9001\u4fe1\u3002\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308btextarea\u3092setInterval\u3068Ajax\u3067\u5b9f\u88c5\u3002<\/h3>\n\n\n<p class=\"has-tertiary-color has-text-color has-background has-small-font-size\" style=\"background-color:#8d8dd8;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">2023-12-04 \u8a18\u8f09<br>\u6982\u8981 : HTML\u30da\u30fc\u30b8\u3067\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u308btextarea\u3092Ajax\u3067\u5b9f\u88c5<br>Keyword : XMLHttpRequest, POST<\/p>\n\n\n\n<p>VSCode\u3092\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u308b\u72b6\u614b\u3067\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002MS-Office\u3092\u306f\u3058\u3081\u3001\u3053\u308c\u307e\u3067\u306f\u30d5\u30a1\u30a4\u30eb\u306f\u5909\u66f4\u3057\u3066\u3001\u6700\u5f8c\u306b\u4fdd\u5b58\u3001\u3042\u308b\u3044\u306f\u3068\u304d\u3069\u304d\u4fdd\u5b58\u3001\u3068\u3044\u3046\u306e\u304c\u5f53\u305f\u308a\u524d\u3067\u3057\u305f\u3002\u306a\u306e\u3067VSCode\u3092\u5e38\u306b\u4fdd\u5b58\u3067\u4f7f\u3063\u3066\u3044\u308b\u3068\u3001\u6700\u521d\u306f\u843d\u3061\u7740\u304b\u306a\u3044\u611f\u3058\u3082\u3042\u308a\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u6163\u308c\u308b\u3068\u3001\u306a\u3093\u3066\u30b9\u30c3\u30ad\u30ea\u3057\u3066\u3044\u308b\u3093\u3060\u308d\u3046\u3001\u3053\u3046\u3042\u308b\u3079\u304d\u3067\u306f\u306a\u3044\u304b\u3001\u3068\u601d\u3046\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<br><br>\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3067\u306e\u30bb\u30c3\u30c6\u30a4\u30f3\u30b0\u3092\u66f8\u304d\u63db\u3048\u305f\u308a\u3059\u308b\u3068\u304d\u306b\u3001\u30b5\u30fc\u30d0\u306e\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u4fdd\u5b58\u3059\u308b\u3001\u3068\u3044\u3046\u51e6\u7406\u3092\u66f8\u304d\u307e\u3059\u304c\u3001\u3053\u308c\u3082Ajax\u3067\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u308c\u3070\u3088\u3044\u306e\u3067\u306f\uff1f\u3068\u8003\u3048\u307e\u3057\u305f\u3002<br><br>\u4ee5\u4e0b\u306fphp\uff11\u30da\u30fc\u30b8\u306e\u307f\u3067\u307e\u3068\u3081\u305fAjax\u5e38\u6642\u4fdd\u5b58\u578b\u3067jQuery\u306a\u3057\u7248\u306e<br>textarea\u21d4Text\u30d5\u30a1\u30a4\u30eb\u66f4\u65b0\u3002\uff11\u79d2\u7f6e\u304d\u306b\u5909\u66f4\u304c\u3042\u308c\u3070\u4fdd\u5b58\u9001\u4fe1\u304c\u88cf\u3067\u8d70\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>&lt;?php\n\n  \/\/Ajax Save\u7528\n  $ajax = ($_REQUEST[&#39;ajax&#39;] ?? &#39;&#39;);\n  if ($ajax === &#39;save&#39;) {\n    if (!file_put_contents(&#39;.\/myfile.txt&#39;, $_REQUEST[&#39;text&#39;])) {\n      echo &#39;SAVE ERROR!!&#39;;\n    }\n    exit;\n  }\n\n  \/\/\u521d\u56de\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u51fa\u3057\n  function readText() {\n    echo trim(htmlspecialchars(file_get_contents(&#39;.\/myfile.txt&#39;)));\n  }\n?&gt;\n&lt;!doctype html&gt;\n&lt;html lang=&quot;ja&quot;&gt;\n&lt;head&gt;\n  &lt;meta charset=&quot;UTF-8&quot;&gt;\n  &lt;title&gt;TextFileAjaxSave&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;div id=&quot;result&quot;&gt;Auto Save&lt;\/div&gt;\n  &lt;form method=&quot;post&quot; action=&quot;&quot;&gt;\n    &lt;textarea id=&quot;text&quot; cols=&quot;80&quot; rows=&quot;40&quot;&gt;&lt;?=readText();?&gt;&lt;\/textarea&gt;\n  &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;script&gt;\n  let mv_hasChange = false;\n  const elem_text = document.getElementById(&#39;text&#39;);\n  const req = new XMLHttpRequest();\n  req.addEventListener(&#39;readystatechange&#39;, httpRequest_readystatechange);\n  elem_text.addEventListener(&#39;input&#39;, () =&gt; { mv_hasChange = true; });\n  setInterval(ajaxsaveText, 1000);\n\n  function ajaxsaveText() {\n    if (mv_hasChange) {\n      \/\/\u5909\u66f4\u304c\u3042\u3063\u305f\u5834\u5408\u306fAjax\u4fdd\u5b58\u3059\u308b\n      req.open(&#39;POST&#39;, &#39;&#39;);\n      req.setRequestHeader(&#39;Cache-Control&#39;, &#39;no-cache&#39;);\n      req.setRequestHeader(&#39;content-type&#39;, &#39;application\/x-www-form-urlencoded;charset=UTF-8&#39;);\n      req.send(&#39;ajax=save&text=&#39; + encodeURIComponent(elem_text.value));\n      mv_hasChange = false;\n    }\n  }\n\n  function httpRequest_readystatechange() {\n    \/\/\u4fdd\u5b58\u30a8\u30e9\u30fc\u304c\u3042\u3063\u305f\u5834\u5408\u306f\u8868\u793a\u3059\u308b\n    if (req.responseText.length) document.getElementById(&#39;result&#39;).innerText = req.responseText;\n  }\n\n&lt;\/script&gt;\n&lt;\/html&gt;<\/code><\/pre><\/div>\n\n\n\n<p> encodeURIComponent \u306f \u5024\u306e\u307f\u3092\u304f\u304f\u308b\u3053\u3068\u3002<br>&#8216;key=&#8217;\u3092\u4e00\u7dd2\u306b\u5909\u63db\u3057\u3066\u3057\u307e\u3046\u3068&#8217;=&#8217;\u304c\u6d88\u3055\u308c\u3066\u3057\u307e\u3063\u3066\u3001\u30b5\u30fc\u30d0\u5074\u3067 ! isset() \u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3059\u3002<br>(\u3068\u30b3\u30b3\u3067\u30cf\u30de\u308a\u307e\u3057\u305f\u306e\u3067 -_-;)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308btextarea\u3092Javascript\u306esetInterval\u3068Ajax\u3001\u30b5\u30fc\u30d0\u5074\u306fPHP\u3067\u5b9f\u88c5\u3002<\/p>\n","protected":false},"author":1,"featured_media":750,"comment_status":"open","ping_status":"closed","sticky":false,"template":"wp-custom-template-x24-index","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[94,84,23,93,92],"_links":{"self":[{"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/posts\/749"}],"collection":[{"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/comments?post=749"}],"version-history":[{"count":0,"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/posts\/749\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/media\/750"}],"wp:attachment":[{"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/media?parent=749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/categories?post=749"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/web.cloudfree.jp\/journal\/wp-json\/wp\/v2\/tags?post=749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}