0

クリックラジオとサーバーで取得したqueryStringを送信して、xmlで応答を取得したい。私はほとんど解決策に近づいていますが、問題をデバッグできません。なぜそれが機能しないのですか。

<script>

$(document).ready(
                function() {
                       $("#myCity").click(  
                    /* $("input[type=radio][name=myCity]").click( */
                                       function() {
                                                 var radioCity = $('input:radio[name=myCity]:checked').val(); 
                                              /* radioCity = $('input[name=myCity]').filter(':checked').value();  */

                                              link = "http://localhost:8080/Shipping_Order/getCity_xml.jsp?qString="+radioCity;

                                        $.ajax({ 
                                            type:"GET",
                                            url : link,
                                            data : radioCity,
                                            dataType : "xml",
                                            success : function() {

                                                /* var myCity = $('input:radio[name=myCity]:checked').value; */
                                                /* var myCity = $('input[name=myCity]:radio:checked').val() */

                                                for ( var i = 0; i < xmlDoc.getElementsByTagName("city").length; i++) {

                                                    $("#radioTable").append(
                                                                    '<tr><td id="username"'+i+'>'
                                                                            + xmlDoc
                                                                                    .getElementsByTagName("username")[i].childNodes[0].nodeValue
                                                                            + '</td><td id="city"'+i+'>'
                                                                            + xmlDoc
                                                                                    .getElementsByTagName("city")[i].childNodes[0].nodeValue
                                                                            + '</td> <td id="contact"'+i+'>'
                                                                            + xmlDoc
                                                                                    .getElementsByTagName("contact")[i].childNodes[0].nodeValue
                                                                            + '</td></tr>');

                                                }
                                            }

                                        });
                                    });
                });

jQuery のクリック イベントで、変数「radioCity」が現在のラジオ値を取得し、この値を ajax「url」が GET リクエストによって queryString で渡して送信します。サーバー (getCity_xml.jsp) は xml データで要求に応答し、後でセレクター名 #radioTable で追加します。

私が作成したHTMLで

getCity_xml.jsp

<%
response.setContentType("text/xml");

try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/shipping_order","root","root");
Statement st = con.createStatement();
String myCity = request.getParameter("qString");
ResultSet rs = st.executeQuery("select username, contact, city from user where city ="+myCity);

while(rs.next())
{

    out.println("<user>");
    out.println("<username>"    +rs.getString(1)+   "</username>");
    out.println("<contact>"     +rs.getInt(2)+      "</contact>");
    out.println("<city>"        +rs.getString(3)+   "</city>");
    out.println("</user>"); 

}


rs.close();
st.close();

con.close();

}catch (SQLException ex) {out.println("Exception Occured");}  

%>
4

1 に答える 1

1

補足です。決してありません!!!111 SQL クエリで文字列連結を使用します。

これにより、SQL インジェクションの脆弱性がコードに導入されます。このチュートリアルにアクセスすることを検討してください: http://www.tutorialspoint.com/jdbc/jdbc-statements.htm

質問に関しては、都市名を引用符でエスケープする必要があります

ResultSet rs = st.executeQuery("select username, contact, city from user where city = '"+myCity + "'");
于 2013-02-21T13:07:49.830 に答える