[JQuery] Zobrazení přijatých dat po JSON

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod nofire 30. 12. 2014 14:04

Zdar, šel jsem torchu do sebe a začal na stránkách používat JQuery. Mám ale začátečnícký problém a předem upozorňuji, že odpověď na můj problém jsem hledal na Google i tady a nikde jsem se nenašel odpověď.

Takže prosím pokud mi někdo můžete pomoci s tímhle. Posílám zkušební data s parametrem a čekám na ně odpověď v message boxu, ale žádná hláška s výsledkem nevyskočí i když data přijdou. To jsem zjistil tak, že jsem se podíval prográmkem SmartSniff na síťovou komunikaci. Myslím, že z kódu bude vše jasné.
Kód: Vybrat vše
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
  <meta content="cs" http-equiv="Content-Language" >
  <title>JQUERY</title>
  <script type="text/javascript" src="scripts/jquery-2.1.3.min.js"></script>
</head>
<body>
<script type="text/javascript">
  $(document).ready(function() {
    $('#volba').change(function() {
    //alert($('#volba').val());
       $.getJSON("posli4.asp?q=" +  $('#volba').val(),function(vystup){
        alert("ID vína je: " + vystup.vt_id + " a název je: " + vystup.vt_nazev);
       });
     });
  });
</script>   
<form>
   Vyber víno:
   <select name="jmeno" id="volba" >
      <option value="2">Bílé
      <option value="4">Červené
      <option value="5">Růžové
   </select >
</form>
</body>
</html>


soubor posli.asp vypadá takhle:
Kód: Vybrat vše
<!--#include file="conn.asp"-->
<%
sql = "SELECT * FROM vinoteka WHERE vt_id='" & Request.QueryString("q") & "'"
vysledek.Open sql, spojeni
response.write vysledek.fields("vt_id")
response.write vysledek.fields("vt_nazev")
%>

Soubor conn.asp zde neuvádím, protože připojení do databáze funguje.

Díky za pomoc ;-)
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 30. 12. 2014 14:13

Program na síťovou komunikaci snad nepotřebuješ, tohle umí i samotné browsery (F12). Co přesně přijde jako odpověď?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod nofire 30. 12. 2014 14:26

Díky, máš určitě pravdu s klávesou F12, ale ve FF mi to nedá přijatá data. Ale asi to neumím používat.

Takže mě přijde tohle :
Kód: Vybrat vše
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 16
Content-Type: text/html
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Tue, 30 Dec 2014 13:28:10 GMT

2,Alibernet Rose
           

Není tam čeština, což by mi tak nevadilo. Ještě jsem do toho posli.asp dodělal čárku jako oddělovač což v kódu v náhledu posli.asp není (jen pro pořádek).
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 30. 12. 2014 14:31

No sám vidíš, že tam není žádné vt_id a vt_nazev. Proč vůbec myslíš, že je to JSON?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod nofire 30. 12. 2014 14:41

No já si to myslím, proto, že jsem to dělal podle nějakého návodu tady : http://citron.blueboard.cz/clanek/jquery-pro-zacatecniky-ajax .

Ok, posli.asp jsem upravil tak aby to dával tak jak si myslím, že by to mělo být. Ale asi je to špatně, protože to taky nejde.
Kód: Vybrat vše
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 31
Content-Type: text/html
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Tue, 30 Dec 2014 13:38:52 GMT

vt_id:2,vt_nazev:Alibernet Rose
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 30. 12. 2014 14:44

Ten JSON by měl vypadat nějak takhle:
Kód: Vybrat vše
{vt_id:2,vt_nazev:"Alibernet Rose"}

Ostatně na té stránce to píšou.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod nofire 30. 12. 2014 14:51

Jasně, ale já to odesílám z ASP a ne z PHP.
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 30. 12. 2014 14:53

JSON je JSON a je jedno, jakým způsobem ho vytváříš.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod nofire 30. 12. 2014 14:58

OK, tak jsem to přepsal. Bohužel to nechodí. myslíš, že problém je na straně serveru, ža to posílá špatně ? Teď je to takhle:

posli.asp
Kód: Vybrat vše
<!--#include file="conn.asp"-->
<%
sql = "SELECT * FROM vinoteka WHERE vt_id='" & Request.QueryString("q") & "'"
vysledek.Open sql, spojeni
response.write "{vt_id" & ":" & vysledek.fields("vt_id") & ","
response.write "vt_nazev" &  ":""" & vysledek.fields("vt_nazev") & """}"
%>


a server vrátí toto:
Kód: Vybrat vše
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 35
Content-Type: text/html
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Tue, 30 Dec 2014 13:54:32 GMT

{vt_id:2,vt_nazev:"Alibernet Rose"}
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 30. 12. 2014 15:05

Co to udělá, když tam bude jenom:
Kód: Vybrat vše
alert(vystup);
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod JVIC 30. 12. 2014 15:06

response.write... To určitě nebude správné řešení. Výsledek vypadá že je ok, ale určitě se z ASP dá odeslat JSON odpověď elegantněji než vytvářet odpověď přes skládání řetězců.
JVIC
Junior

Odeslat příspěvekod nofire 30. 12. 2014 19:37

Wikan> Tak když napíšu Alert(vystup); tak je to stejnější ;-) .

JVIC > No to se mi taky moc nelíbí, takhle skládat odpověď. To určitě není ta správná cesta. Ale s ASP se asi moc nedělá, protože příkladů pro PHP je na netu fůra.
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 30. 12. 2014 20:08

V konzoli to vypisuje nějakou chybu? Proč vůbec používáš ASP? To je 15 let stará technologie.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod nofire 31. 12. 2014 07:06

V konzoli to nevypisuje žádnou chybu, protože ty data normálně přijdou, jen se nezobrazí.

ASP je sice starší, ale je to čistější kód, který při vrácení dotazu nezaneřádí stránku balastem jako ASP.NET. Už mám hotovou aplikaci a předělávat to do PHP se mi moc nechce.
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 31. 12. 2014 08:44

A funguje ti vůbec alert()?
Jinak ASP.NET ti stránku zaneřádí, jenom když to neumíš.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod nofire 31. 12. 2014 08:50

jak vidíš na začátku kódu asp, testuju si jestli hodnota ze select přijde do funkce a to samozřejmě funguje.
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 31. 12. 2014 09:27

Já vidím, že ten kód je zakomentovaný.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod nofire 5. 1. 2015 14:00

Tak jsem se o svátcích na to ještě podíval a není to zase tak složitý. Takže kdo by potřeboval vydojit z databáze MSSQL nějaký data pomocí ASP a JQuery, posílám malý příklad.
Jen pro upřesnění, je to sice zřejmý z kódu, ale pro jistotu - kliknutím na tlačítko se vypíše celá databáze a volbou ze selectu se vybere jen jeden záznam podle parametru.

kód posli.asp který posílá data
Kód: Vybrat vše
<!--#include file="conn.asp"-->
<% If Request.QueryString("q") = "" then
      vysledek.Open "SELECT * FROM vinoteka", spojeni
%>   
      <table>
         <tr>
         <th>ČÍSLO</th>
         <th>NÁZEV</th>
          </tr>   
<%      Do Until vysledek.EOF    %>   
      <tr>
          <td><%=  vysledek.fields("vt_id") %></td>   
         <td><%=  vysledek.fields("vt_nazev") %></td>
      </tr>
<%       vysledek.movenext
      Loop   %>
      </table>
   
<%  else
      sql = "SELECT * FROM vinoteka WHERE vt_id= '" &  Request.QueryString("q") & "'"
      vysledek.Open sql, spojeni
      response.write  vysledek.fields("vt_id")
      response.write  vysledek.fields("vt_nazev")
  end if   
%>


Kód kterým se říká o data.
Kód: Vybrat vše
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
        <meta content="cs" http-equiv="Content-Language" >
        <title>JQUERY</title>
      <script type="text/javascript" src="scripts/jquery.js"></script>
    </head>
<body>
<script type="text/javascript">
  $(document).ready(function() {
    $('#volba').change(function() {
        $.get('posli2.asp?q=' +  $('#volba').val(), function(vystup){
      $("#pokus").val(vystup);
   });     
     });
      
    $('#tlac').click(function() {
        $.get('posli.asp', function(vystup){
      $("#odstavec").html(vystup);
   });     
    });
});
</script>   
<select name="jmeno" id="volba">
   <option value="2">Bílé
   <option value="4">Růžové
   <option value="5">Červené
</select >
<input name="Button1" type="button" value="KLIKNI SI" id="tlac">
<input name="Text1" type="text" id="pokus" style="width: 528px; height: 24px">
<p id="odstavec"></p>
</body>
</html>


conn.asp, tenhle soubor může být zbytečný, když si ten connection string napíšete do kódu na stránku, která posílá data.
Kód: Vybrat vše
<%
Set spojeni = Server.CreateObject("ADODB.Connection")
spojeni.Open "PROVIDER=SQLOLEDB;DATABASE=yyyyyy;UID=xxxxxxx;PWD=yyyyyy;DATA SOURCE=wwwwwwwww"
Set vysledek = Server.CreateObject("ADODB.Recordset")
%>


Tak to snad někomu pomůže. ;-)
Ve víně je pravda... ale ve kterém ? Stále ho hledám.
nofire
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků