• ベストアンサー

GETクエリを含むリンクを張るとき・・・

GETクエリを含むリンク張ったらW3CのValidatorに怒られました。 ”general entity "type" not defined and no default entity” とのことです。 &type=~ というクエリを含むので、&が実体参照の始まりとみなされてしまうようです。 これはどう修正すべきでしょうか。 <a href="URI">にGETクエリを含むURIを用いるのが文法違反なのでしょうか。

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

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

&type=~のところを、 &amp;type=~にするのが正しいです。 (&は表示の都合で全角にしています)。

svocm
質問者

お礼

いつもありがとうございます。 リンクURIにも実体参照を適用するのですね。 表示部分のみかと思っていました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • HTTP プロトコル(正しい GET コマンドの書き方)

     Perl を使って自分のリンク集のリンクの存在チェックプログラムを作っています。  で、HTTP プロトコルの、こちらが発行するリクエストで "GET xxxxx HTTP/1.0" というのがあると思いますが、この xxxxx の部分の文法でちょっと手間取ってます。  というのも、サーバーによって http:// から始まるパスでなければならない場合と、ドメイン名は除いた純粋なパス("http://www/xxx/" であれば、"/xxx/" ということ)でなければならない場合の2通りがあるんです。  ほとんどのサーバーは両方OKなんですが、一部のサーバーだけがそういう設定になっているようです。  正しいクエリーURIの記述の仕方とかあるんでしょうか。  それとも、やっぱり2回リクエストするしかないんでしょうか。

  • base hrefとlink rel

    テキストエディタでhtmlを書いています。 外部cssを使うので、 <link rel="stylesheet" href="style.css" type="text/css"> をヘッダ部に入れていますが、これより上に <base href="~"> で基準URIを指定しようとすると、cssが反映されなくなってしまいます。 先に <link rel="~ を入れてしまうと、文法チェックで引っ掛かるのですが、どうしたら良いのでしょうか? ソースは、 <Head> <base href="絶対パス"> <link rel="stylesheet" href="style.css" type="text/css"> で、この後にmeta属性を入れています。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • GET POST の引数渡しについて

    現在、PHPにて掲示板を製作中です。 スレッド型でタイトルをクリックすると<a href="...?記事のNo.&...">タイトル</a>とGETで情報を渡し、その書き込みが表示される仕組みです。 書き込みフォームからの情報はPOSTで渡します。といたって普通の仕組みだと思うのですが、問題はGETで受けた値をPOSTで更新できないのです。 どういう事かというと、まずタイトルをクリックしNo.1の記事を表示します、そのときURIの表示は[ http://・・・.php?type=tree$log=1 ]になっているとします。 そのNo.1の記事に返信するために内容を書き込んでsbumitボタンを押して記事をPOSTで送信します。 返信記事はNo.2になります。すると返信されたNo.2の記事内容を表示し、No.1はスレッドでタイトルだけの表示になるようにしてるのですが、そのときのURIの表示は[ http://・・・.php?type=tree$log=1 ]ままなのです。そのため、画面ではNo.2を表示してるですが、URIはNo.1のままなので、No.1のタイトル部分をクリックしても、No.1を読み込みに行ってくれません。 No.0があったとしてNo.0をクリックするときちんと表示されます。おそらくNo.1をクリックしたGETの情報を引きずっていてまだNo.1を表示していると思っているためだと思うのですが、POSTで渡した場合はGETの情報を更新できないのでしょうか? 何を言っているのかよくわからないかと思いますが、何か解決策はないでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • 文字参照「#」を含むURI 正しくない?

    アンカータグなどでCGIへのリンクを指定するとき、 xxx.cgi?param1=aaa&param2=bbb などというURIの場合、そのままHTML内に書くと「&」記号が文法エラーになるので、「&amp;」などに置き換えますよね。 これを、汎用的なモジュールや適当なサブルーチンを使って、記号などを一括で「&#38;」のような文字参照に置き換えています。 ところが、 xxx.cgi?param1=aaa&param2=bbb#name のように(パラメーターではなく)アンカー名が入っていると「#」記号が「&#35;」に置き換えられるのですが、Another HTML-lint でチェックしてみると、この部分が正しくないと警告されてしまいます。 -------------- <A> の HREF 属性の URI 中の実体参照 `&#35;` は使用できない文字 `#` です。 -------------- 単純に、実体参照はデコードしてから評価し、#記号はURIとして認められるように思うのですが、違うのでしょうか。 「#記号はURIとして認められる」という私の認識自体は間違っていないと思うのですが、なぜ実体参照にするとNGなのでしょう。「実体参照はデコードしてから評価」という認識が、間違っていますか? どなたか、ご教授お願いいたします。 (※ 文中の「&」記号が、ここに投稿するとなぜか化けるので全角にしてあります)

    • ベストアンサー
    • HTML
  • javaScriptでのクエリー文字の取得

    お世話になります。 PHPを使ってjavaScriptで書かれたページを生成しています。 デバッグ中、 このjavaScriptを書き換えても、 ページがキャッシュされてしまい、 書き換えたとおりに動かないことがあります。 これを回避する方法として、 javaScriptにクエリー文字を渡すと、 キャッシュを回避できるという方法があるようです。 参考サイト  http://wisdomtrees.net/?p=10 http://billyboy.blog81.fc2.com/blog-entry-183.html これらを真似て、 PHPでクエリー値が動的に変わるようにしようとしているのですが、うまくいきません。 以下、呼び出し元のPHPと呼び出し先のjavascriptのソースです。 ●test.php <?php echo "<script type='text/javascript' src='test.js?time=".time()."'></script>"; ?> ●test.js document.write("### loading time is "+getQuerystring('time')); function getQuerystring(key, default_) {  if (default_==null) { default_=""; key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regex = new RegExp("[\\?&]"+key+"=([^&#]*)"); var qs = regex.exec(window.location.href); if(qs == null){ return default_; }else { return qs[1]; } } } test.jsの1行目では、 クエリー文字が渡っているかどうか表示しているのですが、 動かしてみると何も表示されません。 表示されない原因としては、window.location.hrefが、 test.php(呼び出し元)を指しているためなのですが、 では、test.jsとしてクエリー文字を処理するには、 どうしたらよいのでしょうか? よい方法があれば教えていただければと思います。 よろしくお願いします。

  • Pythonでクエリパラメータを取得する際のエラー

    まずHTML側で href="http://root/page?ID={{id}}" として動的にクエリパラメータを含んだURLを設定します。 そのリンクにアクセスした際に、 サーバ側のmain.py内で def main(): application = webapp.WSGIApplication([('/page(.*)',PageHandler)],debug=True) util.run_wsgi_app(application) if__name__== '__main__': main() としてハンドラーを設定し、 class PageHandler(webapp.RequestHandler): def get(self): query = self.request.get('ID') parameta = {'pageID':query} fpath = os.path.join(os.path.dirname(__file__),'templates','page.html') html = template.render(fpath,parameta) self.response.headers['Content-Type'] = 'text/html' self.response.out.write(html) のquery = self.request.get('ID')でクエリパラメータを取得し、その値を渡しつつhtmlを書き出しさせています。 これを実際に動かすと TypeError: get() takes exactly 1 argument (2 given) というエラーが出て表示されないのですが、どこに問題があるんでしょうか? ちなみにGoogle App Engine上で実装しています。 

  • Ajax・jQueryでGET時にIEで文字化け

    Ajax・jQueryで日本語をGETするとき、IEで文字化けします。 (Firefox,chromeでは文字化けは起こりません。IE6/7/8で確認すると文字化けします) どのようにしたら文字化けが起こらなくなるか教えていただければと思います。 環境 PHP:5.1.6 サーバー・HTMLの文字コードはUTF-8 下記のようなリンクを作り、「jquery.url.js」でパラメータを取得しています。 <a href="./test.php?keyword=テスト&cate=1"> (実際には下記のソースに示しますが、テストの文字はurlencordしています。) 【javascript部分】 <script type="text/javascript" src="jquery.url.js"></script> <script type="text/javascript"> $().ready ( function() { $('#sample-get').find('a').click ( function() { var url = $.url ( $(this).attr('href') ); $.ajax ({ type: 'GET', url: 'send.php', cache: false, data: url.attr ( 'query' ), success: function ( data, dataType ) { $('#test').html ( data ); }, error: function ( XMLHttpRequest, textStatus, errorThrown ) { this; alert('Error : ' + errorThrown); } }); return false; }); 【HTML(PHP)部分】 $keyword='テスト'; $keyword=urlencord($keyword);//urlエンコード echo<<<EOF <div id="sample-get"> <a href="./test.php?keyword=$keyword&cate=1"><img src="images/sample1.png" alt="sample1" height="200" width="200"></a> </div> EOF; 【PHP部分(send.php)】 <?php echo $_GET['keyword']; echo urldecord($_GET['keyword']); echo $_GET['cate']; ?>

    • ベストアンサー
    • AJAX
  • HttpPostでクエリが送信できない

    とりあえずAndroidのソースなのでAndroidのカテゴリにします 次のようなスクリプトをeclipseで組んでみたのですが、実際に実行するとparamsで指定したクエリが全く送信できていません。javaです。 connectUrlはhttp://shindanmaker.com/(診断ページ番号)で、 paramsには "u" : (診断内容) "from" : ""(空の文字列) が入っています。 文字化けは大丈夫です。 アドバイスお願いします。 public String httpPostRequest( String connectUrl, List<NameValuePair> params, String encode ){ //-----[クライアント設定] try { HttpClient httpclient = new DefaultHttpClient(); // MultipartEntity entity = new MultipartEntity(); //テキストの送信 // for( NameValuePair pair : params ){ // entity.addPart( pair.getName(), new StringBody(pair.getValue(),Charset.forName(HTTP.UTF_8))); // } // entity.addPart(filePair.getName(), new FileBody(file,"application/octet-stream")); HttpPost httppost = new HttpPost(connectUrl); httppost.setURI(new URI(connectUrl)); httppost.setHeader("User-Agent", "Android"); httppost.setHeader("Content-type","text/html"); httppost.setHeader("Content-Type", "multipart/form-data"); httppost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE,false); //-----[POST送信] httppost.setEntity(new UrlEncodedFormEntity(params, encode)); HttpResponse response = httpclient.execute(httppost); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); response.getEntity().writeTo(byteArrayOutputStream); //-----[サーバーからの応答を取得] if(response.getStatusLine().getStatusCode() != HttpStatus.SC_OK){ Toast.makeText(this, "[error]: "+response.getStatusLine(), Toast.LENGTH_LONG).show(); return null; } // return EntityUtils.toString( response.getEntity());//.getBytes( encode ).toString(); return byteArrayOutputStream.toString(); } catch (Exception e){ e.printStackTrace(); return null; } }

  • 外部CSSがモバイルで読み込まれません

    PC(googlechrome)では外部cssが読み込まれるのですが、モバイルで読み込まれず困っています。 テンプレートで <link rel="stylesheet" type="text/css" href="../css/○○.css"> と指定いるのですが、 エラーログを見ると Invalid URI in request GET /../css/○○.css HTTP/1.1 というのが残っています。 機種はauのw65Tです。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • getとpostのメソッドがごっちゃになったようなフォームの結果は、条件によって変わる?変わらない

    getとpostのメソッドがごっちゃになったようなフォームの結果は、条件によって変わる?変わらない 以下のように、getとpostのメソッドがごっちゃになったようなフォームについて質問させてください。 ==================================================================================================== <?php //なお、PHP Version 5.1.6、CentOS4.4です。 /** 以下のように、 form tagで、actionにはクエリーストリングをつけて、でもmethodとしてpostを指定した場合、 */ ?> <form action="/phpinf.php?foo=bar&fuga=hoge" method="post" name="f"> <input type="hidden" name="text_InsideFormElementWhichDeclaresExpresslyThatMethodIsPost" value="ddddd" /> <input type="submit" name="submit" value="送信" /> </form> ==================================================================================================== の結果は、 $_GETの中身(全部)は $_GET["foo"] bar $_GET["fuga"] hoge //----------------------------------------------------------- $_POSTの中身(全部)は $_POST["text_InsideFormElementWhichDeclaresExpresslyThatMethodIsPost"] ddddd $_POST["submit"] 送信 //----------------------------------------------------------- $_REQUESTの中身(全部) は、 $_REQUEST["foo"] bar $_REQUEST["fuga"] hoge $_REQUEST["text_InsideFormElementWhichDeclaresExpresslyThatMethodIsPost"] ddddd $_REQUEST["submit"] 送信 $_REQUEST["セッションidの文字列"] fdhfdshdsfhhkfdsjfdsjf //----------------------------------------------------------- また、$_SERVER から抜粋すると、 $_SERVER["REQUEST_METHOD"] POST $_SERVER["QUERY_STRING"] foo=bar&fuga=hoge $_SERVER["REQUEST_URI"] /phpinf.php?foo=bar&fuga=hoge //----------------------------------------------------------- となりました。 こういった結果は、 OS,Webサーバ,phpやperlやrubyやasp...などの言語の種類(or 素のhtml)、 また、user agent にも関係なく、 同様の結果となるのでしょうか? さらに質問ですが、こういったformの記述は、RFCやW3Cの規約に反していないのでしょうか? ご存じの方がいらっしゃしまた、お教えいただければ幸いです。 以上、よろしくお願いいたします。