Javascriptの.sendでPOSTできません。

このQ&Aのポイント
  • Javascriptで[aaa=bbb&ccc=ddd]というデータをPOSTしてみたいと思って以下のコードを書いてみたのですが、うまく動作しません。
  • どこが間違っているのでしょうか?コメントもツッコミどころがあるかもしれませんが、ご指摘よろしくお願いいたします。
  • Javascriptの.sendメソッドを使用してデータをPOSTしようとしていますが、正常に動作しません。どこに問題があるのでしょうか?ご指摘いただければ幸いです。
回答を見る
  • ベストアンサー

Javascript の .send で POST できません。

こんにちは。 Javascriptで[aaa=bbb&ccc=ddd]というデータをPOSTしてみたいと思って以下のコードを書いてみたのですが、うまく動作しません。 どこが間違っているのでしょうか? コメントもツッコミどころがあるかもしれませんが、ご指摘よろしくお願いいたします。 <html> <head> <script type="text/javascript"> <!-- var gActiveXObj = ""; function GetActiveXObject() {     if(window.ActiveXObject)     {         try//IEのActiveXObject         {             gActiveXObj = new ActiveXObject("Msxml2.XMLHTTP");         }catch(exception){//IEの古いバージョン             try             {                 gActiveXObj = new ActiveXObject("Microsoft.XMLHTTP");             }catch(exception2){                 return null;             }         }     } } function PostData() {     if(!gActiveXObj)     {         GetActiveXObject();         if(!gActiveXObj)         {             alert('ご利用のブラウザではActiveXオブジェクトが取得できません。IEを使ってみて下さい');             return null;             }     }     gActiveXObj.open('POST','test.php',true);//まだソケットはオープンしてない。メンバの設定してるだけ。     //パラメータは左から、メソッド、ファイル名、非同期通信を有効にするかどうか。          gActiveXObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//ヘッダを設定     gActiveXObj.send( "aaa=bbb&ccc=ddd" );     if(gActiveXObj.status == 200)     {         //サーバから受信完了:readyState = 4 メソッドの成功 : status = 200         alert('POST成功');     }else{         alert('readyState: + 'gActiveXObj.readyState);         alert('status:' + gActiveXObj.status);     } } // --> </script> </head> <body> <a href="javascript:PostData()">実験</a> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

gActiveXObj.onload = とか gActiveXObj.onreadystatechange = が、ないとか・・・・。

kMashiMash
質問者

お礼

ありがとうございます。 gActiveXObj.onreadystatechange = function() {  if (gActiveXObj.readyState == 4 && gActiveXObj.status == 200) {    alert('POST成功');   } } でPOSTができるようになりました。

関連するQ&A

  • JavaScriptのDebugが出来るソフト

    お世話になります。 現在、JavaScriptとAjaxのプログラムを組みましたが、非常に細かいところの差異で上手く動いたり、動かなかったりします。 つきましては、JavaScript、Ajax、PHPでのプログラム作成においてDebugができるソフトがあればご紹介下さい。 【一例】 下記コードのcheckとcheck()の違いで上手くいきませんでした。 <html> <head> <meta http-equiv=content-type" content="text/html;charset=utf-8"> <title>Web_data_source</title> <script type="text/javascript"><!-- function getFile() { filename = prompt("test_web.txt","http://localhost/test_web.txt"); //filename = prompt("test_web.txt","http://www.yahoo.co.jp/"); if (!filename) return; xmlhttp = createXMLHttp(); // xmlhttp = xhtttp alert("OK1"); alert(xhttp); if (xhttp !=null) { //alert("ok2-4") xhttp.onreadystatechange = check;←ここの()有る無しで動きませんでした。 xhttp.open("GET",filename,true); //alert("OK2") xhttp.send(null); } //} function check() { if (xhttp.readyState == 4 && xhttp.status == 200) { document.aForm.tArea.value = xhttp.responseText; //document=xhttp.responseText; alert("OK"); }else{ alert("NG"); alert(xhttp.readyState); alert(xhttp.status); } } // XMLHttpオブジェクト作成 function createXMLHttp() { try { //return new ActiveXObject("Msxml2t.XMLHTTP"); //IE用 //alert("OK4"); xhttp= new XMLHttpRequest(); //Firefox用 alert("OK3"); }catch(e){ try { xhttp = new ActiveXObject("Msxml2t.XMLHTTP"); alert("OK3-1"); }catch(e2){ try { xhttp= new ActiveXObject("Microsoft.XMLHTTP") // return null; alert("OK3-2"); }catch(e3){ xhttp= null; } } } } } --></script> </head> <body> <form name="aForm"> <input type="button" value="get file" onClick="getFile()"><br> <textarea cols="40" rows="20" id="tArea"></textarea> </body> <html> 宜しくご回答頂けます様お願いします。

  • javascriptで困っています。教えてください

    以下のようにjavascriptの内容を書いた外部のテキストファイルを読み込んで、実行しようとしているのですが、うまくいきません。普通にjavascriptを読み込むのは分かっているのですが、このような方法ができないのでしょうか?よろしくお願いします。 <!doctype html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> </head> <body> <div id="jsbox"></div> <script type="text/javascript"> var jsbox = document.getElementById("jsbox"); //非同期通信///////////////////////////////////////////// var xmlHttp; loadText(); function loadText(){ if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }else{ if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlHttp = null; } } xmlHttp.onreadystatechange = checkStatus; xmlHttp.open("GET", "http://xxxxxxxxxxxx/js_test.txt", true); xmlHttp.send(null); } function checkStatus(){ if (xmlHttp.readyState == 4 && xmlHttp.status == 200){ var str = xmlHttp.responseText;alert(str); jsbox.innerHTML = str; test_js(); } } ///////////////////////////////////////////////////////////////// </script> </body> </html> テキストファイルをhttp://xxxxxxxxxxxx/js_test.txtに置き、テキストファイルの内容が <script type="text/javascript"> function test_js(){ alert("test"); } </script>

  • IE6 + javascript

    すみません、先ほども質問したのですが、締め切ってしまったのでもう一度質問させてください。 下記コードが、Firefoxでは動作するのですが、IEではjavasciptの部分が動作していません。 もちろん、javascriptの設定は有効にしてあります。 var browser = navigator.appName; if(browser.charAt(0) == "N") { window.addEventListener("load",change_page(page_id),false); } else if (browser.charAt(0) == "M") { window.attachEvent("onLoad",change_page(page_id)); } .... function httpRequest() { if (window.ActiveXObject) { try { httpObj = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { httpObj = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { httpObj = false; } } } else if (window.XMLHttpRequest){ try{ httpObj = new XMLHttpRequest(); } catch(e) { httpObj = false; } } return httpObj; } change_page()はfunctionです。 なぜIE6ではjavascriptが動かないのでしょう? ソースのどこが悪いのかわからず、どなたかアドバイスあればお願いします!

  • Ajaxでデータベース(PostgreSQL)

    を非同期で読み込むことができるでしょうか? ファイルならば下記のようにすれば良いみたいですが データベースの場合のやり方がわかりません。 PostgreSQLのデータを読み込むにはどうしたら良いのでしょうか? <script> var xmlHttp; function loadText() { if (window.XMLHttpRequest) { xmlHttp=new XMLHttpRequest(); } else { if(window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { xmlHttp = null; } } xmlHttp.onreadystatechange=checkStatus; xmlHttp.open("GET","plan.txt",true); xmlHttp.send(null); } function checkStatus() { if(xmlHttp.readyState==4 && xmlHttp.status==200) { alert(xmlHttp.responseText); } } </script> <form> <input type="button" value="read file" onClick="loadText()"> </form>

  • Ajax テキストエリアについて

    作ったテキストエリアにXmlHttpObjを出力したいのですがどのようにすればいいでしょうか? テキストエリアは <textarea id="text" style="width:100%; height:300px;"disabled></textarea><br> というように作りました。 XmlHttpObjは var xmlhttp; function httpHandler(){ if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ alert(xmlhttp.responseText); } } function onButtonclick(){ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.onreadystatechange = httpHandler; xmlhttp.open("GET", "data.txt"); xmlhttp.send(null); } このようにしました。(仮で出力をアラート形式にしております。) 回答よろしくお願いします。

    • ベストアンサー
    • AJAX
  • JavaScriptでの外部データの取り込みについて

    お世話になります。 JavaScriptにて外部fileデータ(c:test_web.txt)を取り込み、ブラウザーに設定した枠内に表示させたいのですが、上手くいきません。 本ソースは参考書のものをそのまま使っているのですが、枠内の表示がされません。 自分なりに調べたところ、外部データを取得できていない様です。 つきましては、下記ソースにて不具合点をご指摘、ご意見頂けます様お願いします。 【JavaScript】 <html> <head> <meta http-equiv=content-type" content="text/html;charset=utf-8"> <title>Web_data_source</title> <script type="text/javascript"><!-- function getFile() { filename = prompt("test_web.txt","c:test_web.txt"); if (!filename) return; xmlhttp=createXMLHttp(); if (xmlhttp) { xmlhttp.onreadystatechange = check(); xmlhttp.open("GET", filename,true); xmlhttp.send(null); } } function check() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.aForm.tArea.value = xmlhttp.responseText; } } // XMLHttpオブジェクト作成 function createXMLHttp() { try { return new ActiveXObject("Msxml2t.XMLHTTP"); }catch(e){ try { return new XMLHttpRequest(); }catch(e) { return null; } } return null; } --></script> </head> <body> <form name="aForm"> <input type="button" value="file_get" onClick="getFile()"><br> <textarea cols="40" rows="20" id="tArea"> </textarea><br> </body> <html> 【c:test_web.txt】 test ok 宜しくご回答を頂けます様お願いします。

  • XMLHttpRequestのブラウザ対応

    JavaScriptで、あるURLの結果を取得しようと以下のようなスクリプトを組みました。 var xmlHttp = false; function loadText(){ xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", "http://hogehoge, true); xmlHttp.onreadystatechange = checkStatus; xmlHttp.send(null); } function checkStatus(){ if (xmlHttp.readyState == 4 && xmlHttp.status == 200){ res = xmlHttp.responseText; alert(res); } } IE8では、結果が取得できたのですが、firefox4.0.1,Chromeでは取得できませんでした。 xmlHttp.status が0となってしまいました。 ただし、GET対象のURLをローカルサーバにすると、取得することができました。 firefox4.0.1,Chromeのブラウザの設定なのでしょうか?それともスクリプトの書き方に問題があるのでしょうか? すみませんが、教えてください。

  • readyStateが4にならない原因

    apache2でAjaxの試しとして下記スクリプトだけのhtmlファイル(http://localhost/newfile.html)を 作り動作を確認してみました(空白部分は全角になっています)。すると最後の部分の alert("Error: readyState code is " + request.readyState);で 2→アラートのOKを押す→一瞬1になり3→アラートのOKを押す→一瞬1になり0→アラートのOKを押すと1になりました。そしてコンソールには ------------------------------------------------ GET http://localhost/a.php 200 OK 60ms Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) request.send(url); ------------------------------------------------ といったエラー表示がでてしまいます。 また、request.openで渡すURLの「http://localhost/a.php」を「a.php」にすると、 一瞬1になり2→アラートのOKを押す→一瞬1になり0→アラートのOKを押すと1 になります。なぜ4にならないのでしょうか。 request.statusは全部0になっているようです。 <script language="javascript" type="text/javascript"> var request = false; try {   request = new XMLHttpRequest(); } catch (trymicrosoft) {   try {     request = new ActiveXObject("Msxml2.XMLHTTP");   } catch (othermicrosoft) {     try {       request = new ActiveXObject("Microsoft.XMLHTTP");     } catch (failed) {       request = false;     }   } } if (!request)   alert("Error initializing XMLHttpRequest!"); window.onload = getCustomerInfo; function getCustomerInfo() { var url = "test"; request.open("GET", "http://localhost/a.php", true); request.onreadystatechange = updatePage; request.send(url); } function updatePage() { if (request.readyState == 4){ if(request.status == 200){     var response = request.responseText;          document.write(response); }else  if (request.status == 404){   alert("Request URL does not exist");      }else{      alert("Error: status code is " + request.status); } }else{   alert("Error: readyState code is " + request.readyState); } } </script>

    • ベストアンサー
    • AJAX
  • この「Javascript」が機能しないのはなぜでしょうか?

    あるサイトにJacascriptで動くボタンがあります。 しかしこのボタンが動作しないPCがあり、とても困っています。 2台のPCがありまして、同じブラウザFirefox3.0.7を入れております。どちらもJacascript機能を「有効」にしています。 しかし片方が正常に動くのに、片方はエラーはでずステータスバーに「完了」と表示されるのですが正常に動きません。 スクリプトとブラウザどちらに問題があるのでしょうか?(ブラウザでしょうか?) ちなみにIE7とoperaでは正常動作しました。 ちなみにソースは、 ■mycard.js function addMyCard(id){ var request; if (window.XMLHttpRequest){ request = new XMLHttpRequest(); } else if (window.ActiveXObject){ try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) { request = new ActiveXObject('Microsoft.XMLHTTP'); } } else { // no support } if(navigator.userAgent.indexOf("Firefox") != -1){ request.onload = function() { if (request.readyState == 4 && request.status == 200){ if (request.responseText == 'true'){ document.getElementById('mycard_add'+id).style.display = 'none'; document.getElementById('mycard_list'+id).style.display = 'block'; } } }; } else { request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200){ if (request.responseText == 'true'){ document.getElementById('mycard_add'+id).style.display = 'none'; document.getElementById('mycard_list'+id).style.display = 'block'; } } }; } request.open('GET', './mycard2.php?id='+id+'&mode=add', true); request.send(null); if(navigator.userAgent.indexOf("Firefox") != -1){ request.onload = function() { if (request.readyState == 4 && request.status == 200){ window.location.reload(); } }; } else { request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200){ window.location.reload(); } }; } } ■HTMLファイルのほうは <dt> <div id="mycard_add100"><a href="javascript:void(0);" onclick="addMyCard(100)"><img src="images/contents/btn_mycard.jpg" width="90" height="20" alt="Myカード追加" /></a></div> <div id="mycard_list100" style="display:none;"><a href="mycard_list.php"><img src="images/btn_mycard2.jpg" width="90" height="20" alt="Myカード" /></a></div> </dt> といった感じです。 スクリプト自体は友人が書いたもので私は全然分からないので もし誤りがある場合は、どの部分か教えていただければ幸いです。 よろしくお願い致します。

  • AJAXでサイト存在チェック時、スクリプトエラー

    AJAXを使用し、遷移したいサイトが存在する場合、その際サイトに遷移し、存在しない場合は、ほかのサイトに遷移するという処理を行いたいのですが、スクリプトエラーが発生しまい困っています。 遷移先をローカルサーバのリンクを指定するとうまくいくのですが、外部サーバのアドレスを指定するとエラーになってしまいます・・。何か制約があるのでしょうか? また、ほかの方法で実現できるのであれば、教えてください。 現在記述しているソースの一部を下記に添付します。 <script language="JavaScript" type="text/JavaScript"> <!-- function fucXMLHttpRequest(){ /* XMLHttpRequestオブジェクト作成 */ var xmlhttp = createXmlHttp(); xmlhttp.onreadystatechange = handleHttpEvent; function handleHttpEvent(){ if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) {       window.open("http://www.inte.co.jp/xxxx/xxxx"); } else { window.open("http://www.inte.co.jp/"); } } } xmlhttp.open("GET", "http://www.inte.co.jp/xxxx/xxxx" , true); xmlhttp.send(null); return false; } function createXmlHttp(){ if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { return new ActiveXObject("Microsoft.XMLHTTP"); } } else { return null; } } //--> </script> </head> <a href="#" onClick="fucXMLHttpRequest()">詳しくはこちら</a>