CGI→AJAXへ配列の受け渡しは可能でしょうか

このQ&Aのポイント
  • CGIからAJAXに配列を渡す方法についてお聞きしたいです。
  • AJAXを使用してCGIから受け取ったデータを加工し、HTML上に表示したいです。
  • テキストでしか受け渡しができないのか、配列のまま渡す方法があるか知りたいです。
回答を見る
  • ベストアンサー

CGI→AJAXへ配列の受け渡しは可能でしょうか

CGI→AJAXへ配列の受け渡しは可能でしょうか AJAX→CGI→DB→CGI→AJAXでデータの受け渡しを考えています。 CGIでDBからデータを受け取ったあとに、AJAXでデータを加工後、HTMLにDBからのデータを表示したいと思っています。 初心者的な質問で申しわけございませんが、CGIからAJAXにでデータを渡すときに、配列の形式で渡すことはできるのでしょうか。 配列のまま渡してAJAXでデータ加工したいと思うのですが、うまくできないので、そもそもできるかどうかお聞きしたいと思いました。 例えば、  &Jcode::convert(\@data,'utf8'); print @data; このようにしてみましたが、ダメでした。 テキストでしか受け渡しができないのでしょうか。 ご存じの方いらっしゃいましたらお願い致します。

noname#223023
noname#223023
  • AJAX
  • 回答数1
  • ありがとう数4

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

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

perlは余り詳しくないのですが、テキストでしか受け渡しはできないはずです。 配列変数はシリアライズして受け取った側がもとに戻すといったような処理 が必用です。 JSON形式というのを使えば楽です。 perlにもきっと、配列とかオブジェクトをJSON形式の テキストストリングにするライブラリーがあるはずです。 javascriptの方も取得したJSON形式テキストをオブジェクトに する機能をたいていのajaxライブラリーは持ってます。 AJAX JSONP で検索されると、いろいろでてくるでしょう。

noname#223023
質問者

お礼

yyr446さん ありがとうございました。 JSONPですか。。新しいことが次々で、頭がついて行けるか心配です。。(泣) とにかく調べてみます! ありがとうございました。

関連するQ&A

  • 「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表

    「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表示したい」 HTMLファイル上にテキストボックスとそれと対になるラベル(ラベルじゃなくても良いのですが。。)のセットがいくつかあります。 テキストボックスにコードを入力したら、ラベルにそのコードに対応する商品名を表示したいと思っています。 テキストボックスにコードを入力後、フォーカスが離れたら(Onchangeで)Ajaxでそのコードの値を取得し、そのデータをCGIに渡してサーバにあるDBに接続し、その結果をHTML上のラベルに表示したいと思います。 Sbmitせずにフォーカスが離れた場合に、データをCGIに受け渡し、そのデータを画面遷移しないで、HTML上に表示するのはどのようにすればいいのでしょうか。 Ajaxを使えばいいと教わったのですが、色んなサイトを調べてみたのですが、Ajaxが初心者で、よくわからず、コードなどございましたら教えて頂けましたら嬉しいです。 よろしくお願い致します。

    • ベストアンサー
    • AJAX
  • AjaxからCGIへの接続につきまして、教えてください。

    AjaxからCGIへの接続につきまして、教えてください。 HTML上のtcdという名前のテキストボックスに入力された、データをテキストボックスのID名と、入力データをCGIに渡して戻り値をHTMLに反映させたいのですが、まずはAjaxからCGIへデータ渡すときに、下記のように記述しているのですが、「アクセスが拒否されました」というエラーがでて、CGIに接続できないみたいなのです。 HTMLもAJAXのファイルも、CGIも同一ドメインにおいてあります。 function ajaxcgi(tcd) { $.get('CGIのURL', {cd: tcd.name, name: tcd.value}, cgiajax); } function cgiajax(message, status) { alert(message + "\n" + "status:" + status); } テストでAlertを使って試したら、tcdテキストボックスの名前も入力データも取得できています。 下記URLを参考にさせて頂きました。 http://www.s-memo.net/blog/2006/12/jquery.php もちろんCGIのURL間違いではありません。 CGI側も、テキストを出すだけにしているのですが、その出力もできないみたいです。 これはどのような原因が考えられるでしょうか。 おわかりの方いらっしゃいましたら教えてください。 よろしくお願い致します。

    • ベストアンサー
    • AJAX
  • Ajax⇒CGI

    JavaScriptは結構知ってますが、 AjaxとPerlに関しては初心者のものです。 早速ですが質問です。 Ajaxで送信したデータをCGI(Perl)で処理して、 サーバーのテキストに保存する方法が良く分かりません。 サーバーはCGIを許可しているところを使っています。 どなたか詳しい方、ご教授お願いします!

  • 文字コードsjisをUTF8に書き換えたい

    CGIの勉強中の者です。 文字コードはSJISで保存しているCGIをUTF8コードに換えるには何が必要でしょうか? HTMLならmeta内をSJISからUTF8に変更し、TeraPadなどのテキストエディタでUTF8に保存すればオッケーなんですが。 CGIの場合はHTMLと違って、換えるには複雑なのでしょうか? CGIプログラムの中では以下の「sjis」を「UTF8」に書き換えし、UTF8で保存しましたけど、文字化けが出てます。 <meta http-equiv="Content-Type" content="text/html;charset=shift_jis"> &jcode'h2z_sjis(*contenido) &jcode'convert(*subject,'sjis'); &jcode'convert(*infor,'sjis'); &jcode'convert(*contenido,'jis'); &jcode'convert(*res_msg,'jis'); print "Content-type: text/html;charset=shift_jis\n\n"; 宜しくお願いします。

    • 締切済み
    • CGI
  • cgiのopenについて

    cgiのopenを使って下記のソースを作りました。 が、読み込んだテキストの一行目しか読み込みませんToT require 'cgi-lib.pl'; &ReadParse(*answer); $data = "$answer{'text'}"; require 'jcode.pl'; &jcode'convert(*data,'sjis'); open(dataright,"<data.txt"); $data= <dataright>; close(dataright); print "Content-type:text/html\n\n"; print <<EOF; <html> <head> <title>メール送信フォーム</title> </head> <body> ------------------<br> お知らせ<br> $data ------------------<br> </body> </html> EOF exit; ちなみにテキストは改行に<br>を入力してあります。 ぜひアドバイスをお願いいたします。

    • ベストアンサー
    • CGI
  • AJAXでサーバーにある連想配列を取り出す

    こんにちは。PHP学習者です。 ブラウザ上でAJAXを使って、サーバーにあるPHPで作ったデータファイルを取得する方法は知っていますが、連想配列を取得することは出来ますか? 今までは連想配列をわざわざテキストファイルに書き換えてからAJAXで取得していましたが、もし直接取得する方法があれば知りたいと思いました。 詳しい方、どうかよろしくご教授ください。お願いします。

  • HTMLの外部jsのようなcgiファイルについて

    はじめまして。かなりレアなケースになると思うのですが、すでにリリースしており、泣き寝入りする事態が起きまして、CGIの出力のところがわからなくて困っております。 1、あるHTMLをブラウザで開くと<head>内のCGIが実行される。 <script language="JavaScript" type="text/javascript" src="○○.cgi"></script> 2、このCGIが実行されるとMySQLのデータを取得し、HTMLでデータを取り扱えるよう、取得した値をJavaScriptの配列の形式に加工され、「Temporary Internet Files」に○○.cgiが保存されます。 var 配列A=new Array(); 配列A[0]="0000001,名前,住所"; 配列A[1]="0000001,名前,住所"; ※○○.cgiを開くと右のような配列の表記が記載されている。 3、このHTML内で、上記の配列をJavaScriptで呼び出せば、Temporary Internet Filesに保存されたcgiファイルのデータ(配列形式の)が表示されるので、まるで外部JSの配列を扱っているかのようにDBのデータを取得することができます。 mysqlのデータを取得した後、CGIでHTMLに吐き出すぐらいはわかるのですが、 画面上に表示させるのではなく、外部JSなら普通どこかサーバにあるJSファイルを見にいくと思うのですが、Temporary Internet Filesに保存され、それが値として操作できるところです。 このCGIの出力の記述がまったくわからないので困っております。 わかりにくい文章で本当に申し訳ございません。どうかよろしくお願いします。

    • 締切済み
    • CGI
  • ajax でのデータ受け渡しに関して

    ajax でのデータ受け渡しに関して わかりにくい内容で申し訳ありません。 現在、PHPで作成されているプログラムの中に、ajaxを組み込みたいと考えています。 処理の動きとしては、あるプルダウンが選択された場合、すぐさまその値をもとにしてDBへ 検索しに行くというものです。 通常、PHPだけの処理の場合、POST等を用いて、ボタンが押されたら違うphpファイルへ値を 送る事が可能かと思われます。 その処理をajax で選択されたらすぐに検索、表示というような動きをしたいと考えて います。 但し、同じソース、画面上の中でなら、以下のような記述で表示させる事は可能かと 思われますが、HTMLで分割した画面で、上段で選択されたプルダウンの値をもとにして、検索 された結果を下段に表示させたいと考えています。 そもそも、ajaxでは同じ画面上での受け渡ししかできず、上記のように分割されたものでは 不可能なのでしょうか。。。 初歩的な内容で申し訳ありませんが、教えて頂きたいと思います。 《記述内容》 ※ 現状では以下のようなサンプル記述をもとに、自画面(同一)上では表示が可能となっています。 <script> function createXMLHttpRequest(){ if( window.XMLHttpRequest ){ return new XMLHttpRequest(); }else if( window.ActiveXObject ){ try{ return new ActiveXObject( "Msxml2.XMLHTTP" ); }catch(e){ return new ActiveXObject( "Microsoft.XMLHTTP" ); } } return null; } function getDataPost( serverURL, objID ,obj){ var ajax = createXMLHttpRequest(); ajax.open( "POST", serverURL ); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange=function(){ if(( ajax.readyState == 4 ) && ( ajax.status == 200 )){ if(objID!=""){ var obj = document.getElementById( objID ); obj.innerHTML = ajax.responseText; } } } ajax.send( obj.name+"="+obj.value ); } </script> <select name="fuga" onchange="getDataPost('hogehoge.php','hoge',this)"> <option value="">---</option> <option value="1">1</option> <option value="2">2</option> </select> <div id="hoge"></div> よろしくお願いします。

    • ベストアンサー
    • AJAX
  • FLASHとCGIでのデータの受け渡しについて

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=602714 でも質問をしたのですが、 FLASHとCGIのデータ受け渡しについて質問です。 FLASH側でテキスト入力したものをCGIで受信して表示を、と思ってるのですが、 イマイチうまくいきません。 FLASHのcgi実行ボタンのアクションスクリプトは on(press){ this.getURL("http://***/test.cgi","NAKA","POST"); } test.cgiの中身は read(STDIN,$buffer,$ENV{'content_length'}); ($title,$value)=split(/=/,$buffer); $buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; print "Content-type:text/html\n\n"; print "<FONT COLOR=RED>文字列</FONT><BR>\n"; print "$buffer<BR>\n"; なんてしてみましたが、「文字列」だけきちんと表示されて後は文字化けしてます。 (変換がうまくいってないのかな?) このデータの受け渡しはあってるのでしょうか?間違ってるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • ajax 文字化け euc-jp

    先程質問したものです データベースから取り出したときに文字化けだと思ったら プレーンテキストでも文字化けしてました。 どうやら原因はajaxを使ってテキストを(DBのデータはhtmlタグと共に返しています)返しているからのようです。 staticなtextの場合、eucではIEもFFも(サファリも)ajaxを使うと 文字化けをするらしいです。 utf-8ならIEとFFで使えるようですが、DBの都合上eucのまま 作りたいです。 どうにか文字化けを回避する方法はありませんか??

    • ベストアンサー
    • PHP

専門家に質問してみよう