jqueryでURLを置換する方法

このQ&Aのポイント
  • JSONデータから特定のURLを置換する方法について
  • データの置換にはjQueryを使用し、10桁の数字を抜き出すように置換する
  • data.urlをdata.newurlidに変更して、適切な置換処理を行うことで解決する
回答を見る
  • ベストアンサー

jqueryでURLを置換する方法

JSONからデーターをjqueryで抽出しています。 なんとか抽出には成功しているのですが、置換ができません。 data.urlに次々URLが代入されているソースになっています。 data.urlをdata.newurlidなどにして 10桁の数字に抜き出すように置換したいと考えています。 どのようにすればうまくいくようになりますでしょうか? 例 data.url = "https://amazon.co.jp/cgi-bin/check?key=4916016556&ID=synchro-night&before=select" ↓ data.newurlid = "4916016556"

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

  • ベストアンサー
  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.1

正規表現使って抽出してみました。 if(data.url.match(/key=([0-9]{10})/)){   data.newurlid = RegExp.$1; } else{   data.newurlid = 0; } 10桁でない可能性があるなら、 [0-9]{10} を [0-9]+ でいいと思います。

synchro-night
質問者

お礼

すばらしい すぐにできました。 ありがとうございました。

関連するQ&A

  • フォームからjQuery,jQuery.jsonを使ってJSONを作っ

    フォームからjQuery,jQuery.jsonを使ってJSONを作ってPHPで表示したい。 こんばんは。2、3日ずっと悩んでて解決しないので助けてください。 jQuery,jQuery.jsonを使ってJSONを作成しています。 クリックイベントに var form = $("#sform"); var json = $(form.serializeArray()); var strJson = $.toJSON(json); という形をとって $.ajax({ url : "request.php", type : "post", data : strJson, success: function(request){ $('#result').html(request); } }); で送っています。 ただPHP側で var_dump($_POST); を行ってもArray ( ) と表示されます。 firebugで見たところpostに入っているデータは以下の通りです。 {"0":{"name":"date","value":"2010/09/15"},"1":{"name":"type","value":"new"},"2":{"name":"bin[]","value":"2"},"3":{"name":"bin[]","value":"3"},"length":4} var_dumpで表示できないのはなぜでしょうか? 上記で変数json のまま送るとオブジェクトとして送れてvar_dump でも表示できます。 ただ今はjson の勉強をしているので、できればなぜこうなっているのかを理解したいです。 基本的なところで勉強不足かもしれませんが、何かアドバイスなど頂けると嬉しいです。 よろしくお願いします。

  • Jqueryについて

    質問失礼します。遅延情報を掲載していただいているサイトからjson形式でデータを取得し自前で用意した鉄道名称データと比較しデータが同一のがあったらXXXが遅延しています、無かったら遅延情報はありませんと記述するHTMLを書きたいのですがjqueryにてWEB上のJSONデータを取得しそれを比較の為に変数に代入するやり方がどうしてもわかりません私も至らぬ点があるかと思いますがご教授いただければ幸いです。

  • JSONをperlで受け取る方法

    お世話になります。 jQueryを使用します。 Handsontableを使いたいと思います。 表に入力した内容をperlのCGIにデータ送信して、処理をしたいのですが どのようにすればいいのかがわからずにいます。 http://handsontable.com/demo/ajax.html こちらにサンプルがあるのですが、saveのときの処理がよくわかりません。 $.ajax の data にただの文字列を設定すれば、CGIでの受け取り方がわかるのですが、 表のデータ?(handsontable.getData()の部分)の場合、CGIではどのように 受け取れば良いのでしょうか? $.ajax({   url: "netaut2.cgi",   data: {"data": "abcde"},   dataType: 'json',   type: 'POST',    : } ↑こうであれば、CGI側は $form = new CGI; $val = $form->param('data'); このようにして$valに"abcde"とデータが取れますが、 var json_data = [ {"name" : "Taro", "age" : 19}, {"name" : "Hana", "age" : 25} ]; $.ajax({   url: "netaut2.cgi",   data: json_data,   dataType: 'json',   type: 'POST',    : } のようにした場合がわかりません。 宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • jQuery.getの引数dataで動的にするには

    お世話になります。 jQuery.get()の第二引数dataによって、動的にJSONを取得したいです。 第一引数urlがhttp://test.com 第二引数が{id:1,name:tanaka}としてgetした場合 http://text.com?id=1&name=tanaka とリクエストしてると考えてよいのでしょうか。 ある大手サイトでget()時、dataによって取得できるJSONが違うのですが、 そのURLの最後に拡張子がありません。 JSONは拡張子が無くても良いというのを知りましたが これはJSONの形式でそのように動的に発行しているのでしょうか。 もしくはサーブレットあたりが動いて動的にさせてるのでしょうか。 たぶんPHPとかではないですよね。 上の例でいくと http://text.com?id=2 http://text.com?id=5 http://text.com?id=15 これで取得できるのが違います。 どうなってるのかさっぱり判りません。 すみません、よろしくお願いいたします。

  • jQuery,Ajaxでcgiに接続する方法がわからなくて困っています

    jQuery,Ajaxでcgiに接続する方法がわからなくて困っています。 あるデータベースのあるテーブル(仮にpersonテーブル)を参照して、html上のformタグに文字を入れるとselectボックス内に表示されるものがマッチしたものが表示されるようなものを作りたいと思っています。 例えば、 personテーブルのperson_nameカラムには(秋本、本田、寺西、寺本、戸田、吉岡)という情報が入っていて、selectボックス内は最初全ての人名が出ているとします。 person.htmlというテンプレートのformのところに【寺】と入力するとselectボックス内は寺西と寺本だけ表示される。 そのようなものを作りたいと思っていますがうまくいきません。何か参考になるURLだけでもかまいませんのでご教授下さい。 できればサンプルソースがあればうれしです。

    • ベストアンサー
    • AJAX
  • jQueryのpostからのリクエストをCGIで受信して処理したい

    jQueryのpostからのリクエストをCGIで受信して処理したい こんにちわ。CGIはまったくの素人に近いですが、よろしくお願いします。 今作成中のページからjavascript(具体的にはjQuery)を使ってpostでリクエストをサーバに送信し、それをCGIで受け取ってカウンタを増やして返す的なことをやろうとしています。 送信側ではとりあえずページをロードしたら(view()で)リクエストを送り(下のtest.cgi)、帰ってきた値を(ID"count1"で)ページにまた反映するという形をとっています。 javascriptのpost部分抜粋 function view() {jQuery.post("../../../cgi-bin/test.cgi", {"key1":"1"}, function(data){ $("#count1").html(data) } ); }; 送信はできてるみたいなのですが受け取るCGIが問題で、「フォームからデータを送る場合」というのは山ほど解説があるのですが単純に送られてきたリクエストを受け取るのは下のプログラムではダメみたいです。 CGI部分 #!/usr/bin/perl my $counter=0; read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} ); $counter++; return("$counter"); 当初CGIが必要だとは思わずにいたので、昨日からCGIを勉強し始めたレベルの素人ですが じっくりと腰をすえて一人で解決する時間もないので、よろしくお願いします。

    • ベストアンサー
    • CGI
  • jqueryで抽出した文字をURLに代入したい

    下記のように他のページhoge.ne.jp/read1000.phpからスクレイピングしたtakahashiという文字を、メインメインサイトhogehoge.jp/index.htmlの<input type="text">内に表示可能なスクリプトがあります。 【現在できていること】 ***************************************************************** 【http://hoge.ne.jp/read1000.php】 <table border="1"> <tbody> <tr> <td class="class3_sql_name">takahashi</td> </tr> </tbody> </table> 【http://hogehoge.jp/index.html】 <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <script> // 引っ張ってきたいサイトのURL url = 'http://hoge.ne.jp/read1000.php'; $.get(url, function(data){ var content3_sql_name = $(data.responseText).find('.class3_sql_name').text();   $("[name='ca2_stock_name']").val(content3_sql_name); }); </script> <input type="text" name="ca2_stock_name" value="" /> ***************************************************************** 上記のスクリプトを実行すると、 <input type="text" name="ca2_stock_name" value="takahashi" /> という形が完成します。 ****************************************************************** 【やりたいこと】 <input type="text" name="ca2_stock_name" value="takahashi" /> ではなく、 <a href="stock.php?name=takahashi">個人ページに移動</a> というように、スクレイピングしたtakahashiの文字をURL内に表示したいと考えています。 考え方としては、変数として切り取り、URL内に +my_name+ という形で代入しようと思います。 ダメだったスクリプトその1 <script> url = 'http://hoge.ne.jp/read1000.php'; $.get(url, function(data){ var content3_sql_name = $(data.responseText).find('.class3_sql_name').text(); }); </script> <a href="stock.php?name="+content3_sql_name+"">個人ページに移動</a> ダメだったスクリプトその2 <script> url = 'http://hoge.ne.jp/read1000.php'; $.get(url, function(data){ var content3_sql_name = $(data.responseText).find('.class3_sql_name').text(); }); var my_name = .text(content3_sql_name); </script> <a href="stock.php?name="+my_name+"">ストックページに移動</a> 上記のように2つを試したのですが、takahashiという文字が代入されることはありませんでした。 どうすれば、takahashiという文字をURLに代入させることができるでしようか? よろしくお願いいたします。

  • jQueryで複数ファイル読み込みを検知する方法

    jQueryでHTTP通信でjsonファイルを取得する場合、 ファイルが一つだけなら $.ajax({ url: path, type: "GET", dataType: "json", success: function(json, status, xhr) { }, error: function(xhr, status, errorThrown) { }, complete: function(xhr, status) { } }); のようにsuccessコールバックなどでデータを取得すればよいのですが 複数ファイルをajax()により取得し、全てのファイルダウンロードが完了したのを 待ってから処理を走らせたい場合どうすればよいのかわかりません。 任意の型のイベントを発生させて、それに対するハンドラ割り当てができればよいのですが javascriptに不慣れなこともあり、調べてもその方法がわかりませんでした。

  • jquery PHP 値 ajax

    失礼します。現在jqueryで作成した2次元配列をPHP側に渡したいのですが上手くいきません。 jquery側のコンソールで確認した際にはsuccessの処理が行われ配列の中身がjson形式で表示されるのですが、その内容をPHP側で確認しようとするとNULLが返ってきてしまいます。 何卒ご教授よろしくお願いいたします。 html側 $(function(){ // 送るデータ形式はJSONでなければ、PHP側でエラーが出る.のでJSON.stringify()でJSON形式に変換 send_data= JSON.stringify(data); // 送信処理 $.ajax({ url: "ajax.php", // 送信先のPHP type: "POST", // POSTで送る contentType: "Content-Type: application/json; charset=UTF-8", //必須ではなさそうだが、サーバ側との整合のために明示しておいた方がよい。 // dataType: 'json', //受信形式 必須ではなさそうだがサーバ側との整合のために明示しておいた方がよい。 data:send_data //JSON形式の送信データ }).success(function(data, status, xhr) { // 通信成功時の処理 console.log("success"); console.log("data ="+data); console.log("status ="+status); console.log("xhr ="+xhr); }).error(function(xhr, status, error) { // 通信失敗時の処理 console.log("error"); }).complete(function(xhr, status) { // 通信完了時の処理 console.log("fin"); }); }) }) PHP側 二通り試してみました。 <?php //php://inputはPOSTの生データを取得できる $json = file_get_contents("php://input"); //JSON形式データをPHPの配列型に変換 $data = json_decode($json); var_dump($data) ; //POSTできたデータを格納 $hoge = $_POST['data']; var_dump($hoge);

    • ベストアンサー
    • AJAX
  • jquery,ajaxによるphp通信でnull

    初めまして。 現在jqueryを勉強中の学生です。 いろいろなサイトを参考にしつつ、試しににjquery・ajaxを使ったphpとの通信を試みているのですが、文字列のやりとりがうまくいきません。 数字ではうまくいくのですが、文字になるとalertの部分でnullと返されてしまいます。 アドバイス等頂ければと思います。 よろしくお願いいたします。 以下部分的ではありますがコードを示します。 (jqueryはjquery-1.11.1.min.jsを使用) [js] $.ajax({ type: "POST", url: "step1.php", data: send_data, success: function(receive_data) { var parseAr = JSON.parse(receive_data); alert(parseAr[0]['name']); }, error: function(XMLHttpRequest, textStatus, errorThrown) {alert('Error: ' + errorThrown); } }); return false; [php側] <?php if(isset($_POST['name'])) { $result = array(); $result[] = array('name'=>'織田', 'age'=>'33'); $result[] = array('name'=>'織田', 'age'=>'33'); echo json_encode($result); } else { echo json_encode('The parameter of "name" is not found.'); } exit; ?>