Pereiti prie turinio

rimcx

Patvirtinti nariai
  • Pranešimai

    130
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    100%

rimcx Pranešimai

  1. 1. Naudok $('form').serialize(), nesudarinėk užklausų rankomis...

    2. Naudok Developer Tools/Firebug - ten sužinosi viską ko reik, rodo ir klaidas ir ką siunčia.

    3. Kai kyla tokios problemos, tai būk malonus, pasivargink http://jsfiddle.net/ užpildyti kuo daugiau laukelių ir paspaudęs Save pasidalink nuoroda..

    1. ok, taip ir padariau.

    2. Tikrinau su chrome.

    3. ok, žinosiu kitą kartą.

     

    Panašu, kad reikia blokuojančios funkcijos, pvz. šis kodas veiks

     function btn_login_click()
    {
       var datastr=$("#login_form").serialize();
    
    	 $.ajax({
    	   type: "POST",
    	   url: "/index.php/login",
    	   async: false, // <--- laukti, kol $.ajax funkcija pabaigs darbą
    	   data: datastr,
    	   dataType: "xml",
    	   success: function(xml,status){
    
    		//  alert( "status: " + xml );
    		login_status(xml);			
    	   }
    	 });
    }

    o neblokuojanti funkcija neveiks

     function btn_login_click()
    {
       var datastr=$("#login_form").serialize();
    
    	 $.ajax({
    	   type: "POST",
    	   url: "/index.php/login",
    	   async: false, // <--- iškart vykdyti kodą toliau po $.ajax funkcija
    	   data: datastr,
    	   dataType: "xml",
    	   success: function(xml,status){
    
    		//  alert( "status: " + xml );
    		login_status(xml);			
    	   }
    	 });
    }

  2. Dabar neveikia $.post funkcija

    function btn_login_click()
    {
       var username=$("#username").val();
       var password=$("#password").val();	  
    
       var datastr="username="+username+"&password="+password;
         // alert("Username: "+username+"\nPassword: "+password);	   
    
       $.post("/index.php/login",datastr, function(xml)
       {
            // si funkcija niekada neiskvieciama
         	alert("veikia");
       }
       ,"xml");
    
    }
    
    
    
    $(document).ready(function(){
    
    $("#login_box").html("<form method='post' id='login_form'>"+
    	"Username:<input id='username' type='text' name='username' size='8' /> "+
    	"Password:<input id='password' type='password' name='password' size='8' /> "+
    	"<input type='submit' value='sign in' id='btn_login'/><br>"+		
    	"<a href='main.html'>[register] </a>	"+	 
    	"</form>");	
    
    
    $('#btn_login').click(btn_login_click);
    
    
    });
    

    btn_login_click() funkcijoje $.post() neveikia

  3. Sveiki,

    koduoju prisijungimo sistemą su jQuery, kad kai vartotojas prisijungia nereiktų perkrauti viso puslapio. Parašiau 2 funkcijas, viena tik užkrovus puslapį patikrina ar vartotojas nėra prisijungęs, o kita siunčia duomenis į serverį paspaudus 'sign in' mygtuką. Man reikia, kad veiktų maždaug toks kodas:

    <head></head>
    <body>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
    
    <script type="text/javascript" >
    $(document).ready(function(){ 
    
    
    
    $.post("/index.php/login/login_status", function(xml){
    
    // patikrint, ar prisijungta, jei ne, parodyti prisijungimo forma
    $("#login_box").html("<form method='post'>"+
    	"Username:<input id='username' type='text' name='username' size='8' /> "+
    	"Password:<input id='password' type='password' name='password' size='8' /> "+
    	"<input type='submit' value='sign in' id='btn_login'/><br>"+	 
    	"</form>");	
    
    },"xml");
    
    });
    
    $(function() { 
     $('#btn_login').click(function() { //  iregistruoti vartotoja kai paspaudzia 'sign in'
       // ...
    $("#login_box").html("Logged in");
    return false;
    });
    });
    </script>
    
    <div id='login_box'>
     <!-- Cia jquery des html !-->
    </div>
    
    </body>
    

    Pirmoji dalis lyg ir veikia, tačiau paspaudus 'sign in' mygtuką taip ir neparodo užrašo logged in. Kiek suprantu $('#btn_login').click() funcija nėra iškviečiama. Keisčiausia, kad va toks kodas veikia:

    <head></head>
    <body>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
    
    <script type="text/javascript" >
    $(document).ready(function(){ // tik uzkrovus puslapi patikrinti ar vartotojas prisiregistraves
    
    // prisijungimo forma ne .post fukcijoje
    $("#login_box").html("<form method='post'>"+
    	"Username:<input id='username' type='text' name='username' size='8' /> "+
    	"Password:<input id='password' type='password' name='password' size='8' /> "+
    	"<input type='submit' value='sign in' id='btn_login'/><br>"+	 
    	"</form>");		
    
    $.post("/index.php/login/login_status", function(xml){
    // ...
    
    },"xml");
    
    });
    
    $(function() { 
     $('#btn_login').click(function() {
       // ...
    $("#login_box").html("Logged in");
    return false;
    });
    });
    </script>
    
    <div id='login_box'>
     <!-- Cia jquery des html !-->
    </div>
    
    </body>
    
    

    Su šiuo kodu paspaudus 'sign in' atsiranda užrašas 'logged in'

     

    Gal žinot kame čia problema? Nes jau sėdžiu puse dienos ir nieko naujo nesugalvoju :unsure: Jaučiu yra kažkokia žiopla klaida, nes jQuery mokausi tik trečią dieną :)

  4. Sveiki,

    turiu va tokį html/css kodą div centravimui:

    <head>
    <!-- <LINK REL=STYLESHEET HREF='style.css' TYPE="text/css"> !-->
     <style type="text/css">
     *
     {
       border: 1px solid black;
     }
    
     body
     {
       background-color: rgb(230,230,230);
      }
    
     #content
     {
       margin: 0 auto;
       width: 80%;
       height: 100%;
     }
     </style>
    </head>
    <body>
    <div id="content">
    
    Hello, world!
    
    </div>
    
    
    </body>
    

    Su Chrome ir Opera veikia puikiai, tačiau neveikia su Internet Explorer 8 versija. Gal žinot kodėl ir kaip galima pataisyti, kad veiktų?

  5. 2. Gal kas zinot kaip sudeti skaiciaus skaiciu suma? Be mod ir div ant c++? T.y. turim kazkoki skaiciu 878946543516546 ir norim sudet to skaiciaus skaicius t.y. - 8+7+8+9+4+6+5+4... Su mod (na %) sugebu, kai buna mazas skaicius, bet kai pasidaro didelis, kuri reikia priskirti "double" jau su % nebegalima, tai kaip padaryt? Nes man to reikia jau dviejuos uzdaviniuos!!!!

    #include <iostream>
    #include <sstream>
    #include <cctype>
    using namespace std;
    
    
    int rasti_suma(double skaicius)
    {
     stringstream ss;
     ss <<fixed<<skaicius;
     string str=ss.str();
    
     int suma=0;
     for(int i=0;i<str.length();i++)
         if(isdigit(str[i])) // ar simbolis nera - ar .
             suma+=str[i]-0x30;
    
     return suma;
    }
    
    
    int main()
    {
     double skaicius=-23.55;
     cout <<"Skaitmenu suma: "<<rasti_suma(skaicius)<<endl; // == 15
    
    }
    

  6. struct vienkryp // sarasas
    {
        char duom[20]; // saraso duomenys
        struct vienkryp *kitas; // <--- reikia struct keywordo
    };

    Nesikompiliuoja greičiausiai todėl, kad tu maišai C ir C++. C kalboje nėra "new" raktažodžio, todėl 'new' reiks pakeisti į 'malloc'. Be to, 'bool', reiks pakeisti į 'int', o vietoj true ir false reiks naudoti 1 ir 0.

     

    Antroje programoje:

            ch=getchar();
       {
                   if(ch=='N' || ch=='n')
                           return 0;
           goto again;
       }

    Šitą kodo dalį gali visiškai ištrinti. Po

     printf("\nAr norite testi? [y/n]\n");

    reikia fflush(stdin);

  7. Galimas toks variantas su malloc() funckcija:

    #include <stdio.h>
    #include <stdlib.h>
    
    struct duomenys {
    char vardas[80];
    char pavarde[80];
    int asmenskodas[80];
    char adresas[80];
    int telefnr[80];
    };
    
    int main()
    {
    struct duomenys *str[80]; // rodykliu masyvas
    for(int i=0;i<80;i++)
      {
         str[i]=malloc(sizeof(struct duomenys));
      }
    //pvz
    strcpy(str[0]->vardas,"klicko");
    printf("%s",str[0]->vardas);
    
    for(int i=0;i<80;i++)
      {
         free(str[i]); // atlaisvinti vietą
      }
    
    }
    

    O kam tau apskritai reikia tos rodyklės į masyvą? str[0].vardas būtų daug paprasčiau :)

  8. Ieškodamas *** su fd.get(pabaiga, 15) praleidi dalį duomenų

    #include <sstream>
    // ...
    void Sak::Skaityti(ifstream &fd)
    {
           string dt;
           string eilute; // duomenu eilute po detales pavadinimu
           int kiekis, kaina, metai, menuo, diena;        //detalei saugoti
           bool baigti(false);
    
           getline(fd, dt);                    //skaitomas detales pavadinimas
    
           kamienas *d = new kamienas;                                     //naujas saraso elementas
           d->deta = dt;
           d->kitas = pr;
           pr = d;
    
           while (!baigti  && fd.good())                                                         //skaitomaas vienas dokumentas
           {       
                   getline(fd,eilute); // nuskaityti eilute po detales pavadinimu
                   if(eilute =="***")
                   {
                           baigti = true;
                   }
                   else
                   { 
                   // paversti eilute i stringstream, kad galima butu naudoti '>>' kaip ir su failais
                           stringstream ss(eilute); 
    
                           sarasas st;
                           ss >> kiekis >> kaina >> metai >> menuo >> diena;
                           st.pg=kiekis;
                           st.ka=kaina;
                           st.dt.mt=metai;
                           st.dt.men=menuo;
                           st.dt.die=diena;
                           pr->sar.Papildyti(st);
                   }
           }
    } 

    Tingėjau kompiliuoti visą kodą, bet turėtų veikti :)

  9. Kiek žinau tai ne, bet jei žinai laiko skirtumą sekundėmis, tai tą skirtumą galima paversti į valandas, sekundes ir pan.

    int main ()
    {
     time_t pradzia=0,pabaiga=0,diff;
     tm *skirtumas;
    
     pradzia=0; // kazkas prasidejo kai buvo 0 sekundziu
     pabaiga=10000; //kazkas pasibaige po 10 000 sekundziui
     diff=pabaiga-pradzia;
    
     skirtumas=gmtime(&diff);
     cout <<"Kiek laiko praejo:\n";
     cout <<"dienos "<<skirtumas->tm_yday<<endl;
     cout <<"valandos "<<skirtumas->tm_hour<<endl;
     cout <<"minutes "<<skirtumas->tm_min<<endl;
     cout <<"sekundes "<<skirtumas->tm_sec<<endl;
    
    
     return 0;
    }
    

  10. Su kompiliatoriumi viskas gerai, tiesiog konsolės langas užsidaro tau nespėjus nieko pamatyti

    #include <iostream>
    #include <limits>
    using namespace std;
    
    int main ()
    {
     cout << "Hello World!" << endl;
     cin.ignore(numeric_limits<streamsize>::max(), '\n' ); // reikia paspausti enter kad uzdaryti konsoles langa
     return 0;
    }

     

    Jei turi kokių klausimų rašyk į AŽ, padėsiu :)

  11. Jau pradėjau su Codeigniter, nes kol kas nieko sudėtingesnio ir nereikia.. Tik va, dingo entuziazmas (kartais atrodo, kad kalnus galiu nuverst, o dabar tinginys užpuolė :( )

     

    Kad nedaryt naujos temos, gal žinot kaip filtruot vartotojo inputą, kad apsisaugot nuo SQL atakų? Užtenka patikrinti ar nėra SQL keywordų inpute ar dar kažką reikia daryti?

×
×
  • Pasirinkite naujai kuriamo turinio tipą...