Javascript String auf Website auslesen

  • 32 Antworten
  • Letztes Antwortdatum
P

PhillippOh

Fortgeschrittenes Mitglied
10
Hallo,

ich habe einen JS String

HTML:
var classes = ["BA11","BA12","BA13","BAV11A","BAV11B","BAV12","BAV13","BFB13A","BFB13B","BFE13","BFG13","BFH13A","BFH13B","BFI13","BFM13A","BFM13B","BGÖ11","BGÖ12","BGÖ13","BGS11","BGS12","BGS13","BGT11","BGT12","BGT13","BKB13","BKG13","BKH13","BKK13","BKM13","BL11","BL12","BL13","BVB13","BVH13","BVM13","CK10","CK11","CK12A","CK12B","CK13A","CK13B","CL10","CL11","CL12","CL13","EI10A","EI11","EI12","EI13","FL-V13","FL11/12","FLV11/12","FO13A","FO13B","FO13B.","FOG12","FOG13","FOI13","FOS12","FOS13","FR11","FR12","FR13","FSP12","FSP13","IT11","IT12","IT13","KM10A","KM10B","KM11","KM12A","KM13A","KM13B","KOS13","LM10","LM11","LM12","LM13","MA11","MA12","MB10","MB11A","MB12A","MB12B","MB13A","MB13B","MZ13","PL11A","PL11B","PL12A","PL12B","PL13A","PL13B","SAS12A","SAS12B","SAS13A","SAS13B","SHK10A","SHK10B","SHK11A","SHK11B","SHK12A","SHK12B","SHK13A","SHK13B","TI11","TI12","VT11","VT12","VT13","VWBA","VWBB","VWBC","ZI11","ZI12","DEMO","EI10B","KM12B","MB11B"];
auf einer Website. Nun gebe ich in ein Textfeld einen Namen aus dem String ein und möchte damit berechnen, an welcher Position er sich befindet, weil ich mit der Position weiter arbeiten muss. FOG12 wäre z.B. 57. Wie mach ich das nun am besten?

Gruß
Phillipp
 
Kontrolle über die Webseite:
-> Bau dir nen JSON-Object.

Keine Kontrolle:
-> Speichere ["X", "Y", "Z"] als String und sage
Code:
string = string.replace("\[", "").replace("\]", "");
String[] foo = string.split(",");

Gruß
 
Das Problem ist ja, dass ich die Website nicht beeinflussen kann. Und wie bekomm ich die JS String von der Website geladen bzw sag meiner App, dass er den nehmen soll?
 
Habs nun etwas anders gemacht. Hab mir in PHP ein Script gebastelt, welches sich die Daten holt und verarbeitet. Über GET Parameter in der URL gebe ich die Klasse an und die ID der Klasse wird dann ausgegeben. So kann ich das leicht in meiner App abfragen und bekomm die ID in der passenden Form.

Hab gehört dass man so Netzwerksachen in nem AsyncTask machen muss. Kann mir jemand nen Deutsches Tutorial dazu geben?
 
Da selbe kannst du auch in deiner app machen oO
Lern englisch. Sollte ja nicht all zu schwer sein.. Ansonsten Crash Curs:
Erbe von AsyncTask
Brauchst die Funktionen
OnPreExecute
DoInBackground
OnPreExecute
Genau in der Reihenfolge wird es auch aufgerufen. Erste und zweite wird im ui Thread verbreitet und das doInBackground eben als Task..

Gesendet von meinem Nexus 4 mit Tapatalk 4
 
Ich kann nunmal besser PHP als Java und ob die App nun auf die Website zugreift und dann alles selbst noch berechnen muss, oder ob sie auf meinen Server zugreift und sofort das Ergebnis bekommt ist doch egal. Für mich war es so halt einfacher. Und zum Thema Englisch habe ich mich in diesem Forum schon öfters geäußert. Wie soll man was komplett neues verstehen, wenn die Erklärungen in einer Sprache sind, die man selbst nur halb kann. Verstehe nicht warum niemand mal Deutsche Tutorials schreibt. Klappt bei anderen Programmiersprachen ja auch. HTML, CSS und PHP durfte ich auf Deutsch lernen ...
 
Weil HTML und Css neunmal keine Programmiersprache sind.
Und die Sprache der Programmiere englisch ist oO
Wenn dir das schon öfters geagt wurde musst du das nur noch verstehen^^

LG Dagobert

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
Auch wenn man HTML und CSS nicht als Programmiersprache bezeichnet, so ist PHP und auch MYSQL eine. Dafür gibt es so viele deutsche Tutorials, also verstehe ich nicht warum das bei der Android Programmierung nicht klappt.

Würde in Foren nicht immer nur auf Google verwiesen, sondern mal mit nem Code geholfen werden, gäbe es auch viel mehr deutsche Erklärungen.
 
Nachdem du in g+ alle zum Wahnsinn getrieben hast tust du es nun hier?
Im 21 Jahrhundert ist nunmal die Weltsprache englisch. So sollte man diese zumindest ansatzweise verstehen und reden können.

Aber der thread geht ja nicht darum ob englisch toll oder nicht ist. Such dir tutorials in englisch oder wer deine Karriere gleich hin...

Gesendet von meinem Nexus 10 mit Tapatalk 4
 
Du hast mich bei G+ geblockt, also kannst gar nicht sehen was ich dort mache.

Habe mittlerweile was gefunden, bin gerade dabei das einzubauen.

Der ursprüngliche Beitrag von 18:44 Uhr wurde um 20:23 Uhr ergänzt:

So, habe bissl rumgewerkelt aber die App stürzt ab. Ich poste euch mal den Code.

Code:
public class OptionsActivity extends Activity {
	
	private Button btnSave;
	public EditText etKlasse;
	public TextView tvAusgabe;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.options);
	
	    // TODO Auto-generated method stub
	    
	    ActionBar actionBar = getActionBar();
	    if(actionBar != null){
	    	
			String abTitel = getString(R.string.action_settings);
	    	
	    	actionBar.setTitle(abTitel);
	    	actionBar.setDisplayHomeAsUpEnabled(true);
	    }
	    
	    btnSave = (Button) findViewById(R.id.btnOptionsSave);
	    etKlasse = (EditText) findViewById(R.id.etOptionsKlasse);
	    tvAusgabe = (TextView) findViewById(R.id.tvOptionsAusgabe);
	    
	    btnSave.setOnClickListener(new View.OnClickListener() {		
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String strEingabe = etKlasse.getText().toString();
				
				if(TextUtils.isEmpty(strEingabe)){
					Toast.makeText(OptionsActivity.this, "Bitte Abkürzung für deine Klasse eingeben", Toast.LENGTH_LONG).show();
				}else{
					new CheckKlassenID().execute(strEingabe);
				}
				
			}
		});
	    
	}
	

	
	@Override
	public boolean onOptionsItemSelected(MenuItem item){
		
		if(item.getItemId() == android.R.id.home){
			onBackPressed();
		}
		
		return super.onOptionsItemSelected(item);
	}

}




class CheckKlassenID extends AsyncTask<String, Void, String> {

	public TextView tvAusgabe;
	
    @Override
    protected String doInBackground(String... strEingabe) {
         
    	String quellcode = null;
    	URL url = null;
    	try {
    	url = new URL("http://oh-mediengestaltung.de/jbvplan/anfrage.php?klasse=" + strEingabe);
    	String readLine = null;
    	String sResult = null;
    	BufferedReader buffReader = new BufferedReader (new InputStreamReader (url.openStream ()));
    	while ((readLine = buffReader.readLine ()) != null) {
    	if (sResult == null) {
    	sResult = readLine;
    	}
    	else {
    	sResult = sResult + readLine;
    	} 
    	}
    	quellcode = sResult; 
    	}
    	catch (MalformedURLException me) {
    	me.printStackTrace();
    	}
    	catch (IOException ioe) {
    	ioe.printStackTrace();
    	}

          return quellcode;
    }      

    @Override
    protected void onPostExecute(String quellcode) {

    	tvAusgabe.setText(quellcode);
    	
    }

    @Override
    protected void onPreExecute() {
    }

    @Override
    protected void onProgressUpdate(Void... values) {
    }
}

Ist glaube ich nich ganz so sauber programmiert, aber das is ja jetzt auch nicht wichtig. Immer wenn ich durch den Button den AsyncTask ausführe, stürzt die App ab. Irgendwo wird also n Fehler sein. Glaube es scheitert irgendwo an der Datenübergabe.
 
Was steht denn im log.. so hilft die fehlerbeschreibung nicht wirklich
 
wat fürn log?
 
Würde gerne nen Log posten jetzt, aber die dort verlinkte App "aLogCat" zeigt mir nix an, egal was ich in den Einstellungen ändere. Wie krieg ich die App nun dazu, mir den Log anzuzeigen?
 
Zu 3.:

Wenn ich richtig lese, dann steht in der Domain unter anderem auch HILFE und hier wird mir nichtmal gesagt, was an meinem Code, den ich schon mühsam zusammengebastelt hab, falsch ist. Ständig auf Google zu verweisen bringt niemanden was. Wenn ich als Besucher über Google hier zum Thema geleitet werde und nur lese, dass ich Googlen soll, dann ist mir auch net geholfen.
 
Dann kauf dir nen Anfänger Buch und arbeite es durch! Und wir können nicht Hellsehen! Wenn du uns die logcat Posten würde könnte man dir weiter helfen. Stattdessen gibst du nur ein Post nach dem anderen ab ohne nur ein bisschen Eigeninitative zu zeigen. Und das bei scheinst du ganz zu vergessen das wir freiwillig Hilfe leisten, in unsere Freizeit.

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
Keine Eigeninitiative? Habe gerade 7 Tabs mit Beispielen offen aber es klappt einfach nicht. Ich habe ein Buch zur Androidprogrammierung, dort wird das Thema aber nicht aufgegriffen. Ist das Buch "Android 4 - Apps entwickeln mit dem Android SDK"

Ich habe euch meinen Code gepostet. Ich denke mal, wenn ihr euch den anguckt, dann wüsstet ihr wo der Fehler liegt, so viel Code ist es nicht.
 
Schön, wie agressiv heute alle sind ;)

ich würde mal spontan drauf tippen, dass die Zeile
Code:
tvAusgabe.setText(quellcode);
den Fehler auslöst, da tvAusgabe innerhalb vom AsyncTask nicht initialisiert ist.

Wäre aber trotzdem gut, wenn du LogCat-Ausgaben hättest, bei den Fehlermeldungen siehst du nämlich die Zeilennummer etc. Wenn du Eclipse/ADT verwendest, hast du unten bei der Konsole einen Tab "LogCat". Oben rechts innerhalb von diesem Tab kannst du dann noch filtern und suchen.
 
Zurück
Oben Unten