Zum Inhalt springen

Ajax Call mit 2 verschiedenen Funktionen


Empfohlene Beiträge

Hallo und willkommen und zu meiner (für fortgeschrittene leichte Frage ;P)

Ich hab einen ajax call gebaut welcher durch einen button gesteuert wird.

Ich hätte einmal diesen Request hier :

function myCall() {

var serialno= document.getElementById('answer344354X45X249SQ001').value;

var Url = "http://10.1.12.136/lime/SerialNo.php?serial="+serialno;

var request = $.ajax({

url: Url,

type: "GET",

dataType: "xml",

success: onSerialNoCheckComplete,

});

function onSerialNoCheckComplete(xml)

{

alert('HI');

$(xml).find('Details').each(function(){

var model = $(this).find('ModelNumber').text();

alert (productname + model);

$("#question91 input.radio:first").click();

});

Nun möchte ich das nach dem letzten alert dieser request automatisch weitergeführt wird:

(Aber mit der model variablen aus dem vorigen request) Hoffe mir kann da jemand weiter helfen ://

function Product () {

var Url = "http://10.1.12.136/lime/Product.php?serial="+serialno+"&model="+model;

var request2 = $.ajax ({

type: "GET",

dataType: "xml",

success: Check,

});

function Check(xml)

{

alert('HI2');

$(xml).find('ProductDetails').each(function(){

var productname = $(this).find('ProductName').text();

var name = $(this).find('ProductCategory').text();

var date = $(this).find('PurchaseDate').text();

alert (productname + name + date );

$("#question91 input.radio:first").click();

});

};

};

};

</script>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo ,

weiss jemand wieso das so nicht funktioniert ? :/

<script>

function myCall() {

var serialno= document.getElementById('answer344354X45X249SQ001').value;

var Url = "http://10.1.12.136/lime/SerialNo.php?serial="+serialno;

var request = $.ajax({

url: Url,

type: "GET",

dataType: "xml",

success: onSerialNoCheckComplete,

});

function onSerialNoCheckComplete(xml)

{

alert('HI');

$(xml).find('ArrayOfDetails').each(function(){

var model = $(this).find('ModelNumber').text();

if (model !== null) {

alert (model);

function Product() {

var serialno= document.getElementById('answer344354X45X249SQ001').value;

var modelno= model;

var Url = "http://10.1.12.136/lime/Product.php?serial="+serialno+"&model="+modelno;

var request2 = $.ajax2({

url: Url,

type: "GET",

dataType: "xml",

success: Productdetails,

});

function Productdetails(xml)

{

alert('HI2');

$(xml).find('ProductDetails').each(function(){

var productname = $(this).find('ProductName').text();

var name = $(this).find('ProductCategory').text();

var date = $(this).find('PurchaseDate').text();

alert (productname + name + date );

$("#question91 input.radio:first").click();

});

};

};

$("#question91 input.radio:first").click();

}

else { alert ('fail');

}

});

};

};

</script><input onclick="myCall()" type="button" value="Check" />

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo ,

weiss jemand wieso das so nicht funktioniert ? :/

 <script>


function myCall() {

var serialno= document.getElementById('answer344354X45X249SQ001' ).value;

var Url = "http://10.1.12.136/lime/SerialNo.php?serial="+serialno;

var request = $.ajax({

url: Url,

type: "GET",

dataType: "xml",

success: onSerialNoCheckComplete,


});


function onSerialNoCheckComplete(xml)

{

alert('HI');


$(xml).find('ArrayOfDetails').each(function(){


var model = $(this).find('ModelNumber').text();


if (model !== null) {

alert (model);

function Product() {

var serialno= document.getElementById('answer344354X45X249SQ001' ).value;

var modelno= model;

var Url = "http://10.1.12.136/lime/Product.php?serial="+serialno+"&model="+modelno;

var request2 = $.ajax2({

url: Url,

type: "GET",

dataType: "xml",

success: Productdetails,


});


function Productdetails(xml)

{

alert('HI2');


$(xml).find('ProductDetails').each(function(){

var productname = $(this).find('ProductName').text();

var name = $(this).find('ProductCategory').text();

var date = $(this).find('PurchaseDate').text();


alert (productname + name + date );

$("#question91 input.radio:first").click();

});

};

};


$("#question91 input.radio:first").click();

}

else { alert ('fail');

}

});

};

};

</script><input onclick="myCall()" type="button" value="Check" /> 

Also wie man oben ja sieht, werden hier 2 verschiedene Requests aufgerufen, welche auch 2 verschiedene Php´s ansprechen.

Mein Ziel ist es , dass der erste Request sich vom Textinput die Eingabe nimmt , diese verarbeitet und auf einem Server die dazu gehörige Modelnummer findet. Mit diesen beiden variablen also Seriennummer und modelnummer, soll dan der 2 Request ausgeführt werden.

Einzeln funktionieren beide requests einwandfrei. nur wenn ich versuche sie zu kombinieren, streikt es bei

function Product() {

var serialno= document.getElementById('answer344354X45X249SQ001' ).value;

var modelno= model; .......

Hoffe das ist ausreichend um mir bei diesem pröblemchen weiterzuhelfen .

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm sorry :P

Also wie man ja sieht kommt nach : " if (model !== null) { " ein alert. Bis zu diesem Punkt funktioniert alles. Aber da passiert nix mehr. Habe leider keine Tools zum monitoring der befehle kann also keinen genauen Fehler nennen. Da ich aber keinen alert mit " HI 2 " erhalte, hängt sich der Request wahrscheinlich nach dem " alert (model); " irgendwo auf .. ich vermute mal er kommt mit dem 2 Request nicht klar ..

mein gewünschtes verhalten wäre hier , das wenn variable model nicht null ist, es gleich in den 2 Request übergeht, bei dem er dan die seriennummer wieder von der eingabe nimmt , ( oder auch aus einer variablen , falls das möglich ist) und die modelnummer aus der variablen model und damit den rest ausführt.

Mehr dazu fällt mir grade nicht ein :/

 <script>


		function myCall() {

		var serialno= document.getElementById('answer344354X45X249SQ001' ).value;

		var Url = "http://10.1.12.136/lime/SerialNo.php?serial="+serialno;

		var request = $.ajax({

		url: Url,

		type: "GET",

		dataType: "xml",

		success: onSerialNoCheckComplete,


});


function onSerialNoCheckComplete(xml)

{

		alert('HI');


	$(xml).find('ArrayOfDetails').each(function(){


		var model = $(this).find('ModelNumber').text();


	if (model !== null) {

			alert (model);


	function Product() {

		var serialno= document.getElementById('answer344354X45X249SQ001' ).value;

		var modelno= model;

		var Url = "http://10.1.12.136/lime/Product.php?serial="+serialno+"&model="+modelno;

		var request2 = $.ajax2({

		url: Url,

		type: "GET",

		dataType: "xml",

		success: Productdetails,


});


	function Productdetails(xml)

{

		alert('HI2');


	$(xml).find('ProductDetails').each(function(){

		var productname = $(this).find('ProductName').text();

		var name = $(this).find('ProductCategory').text();

		var date = $(this).find('PurchaseDate').text();


		alert (productname + name + date );

			$("#question91 input.radio:first").click();

});

};

};


		$("#question91 input.radio:first").click();

}

		else { alert ('fail');

}

});

};

};

</script><input onclick="myCall()" type="button" value="Check" />

Bearbeitet von king_and1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Pro Tip of the day: Wenn man seinen Code sauber einrückt, sieht man viel besser, wie die Blöcke verschachtelt sind.

Ich habe deinen Code mal richtig* eingerückt, vielleicht fällt dir was auf:

<script>

function myCall() {
var serialno= document.getElementById('answer344354X45X249SQ001' ).value;
var Url = "http://10.1.12.136/lime/SerialNo.php?serial="+serialno;
var request = $.ajax({
url: Url,
type: "GET",
dataType: "xml",
success: onSerialNoCheckComplete,
});

function onSerialNoCheckComplete(xml)
{
alert('HI');
$(xml).find('ArrayOfDetails').each(function(){

var model = $(this).find('ModelNumber').text();

if (model !== null) {
alert (model);

function Product() {
var serialno= document.getElementById('answer344354X45X249SQ001' ).value;
var modelno= model;
var Url = "http://10.1.12.136/lime/Product.php?serial="+serialno+"&model="+modelno;
var request2 = $.ajax2({
url: Url,
type: "GET",
dataType: "xml",
success: Productdetails,
});

function Productdetails(xml)
{
alert('HI2');

$(xml).find('ProductDetails').each(function(){
var productname = $(this).find('ProductName').text();
var name = $(this).find('ProductCategory').text();
var date = $(this).find('PurchaseDate').text();

alert (productname + name + date );
$("#question91 input.radio:first").click();
});
};
};

$("#question91 input.radio:first").click();
}
else { alert ('fail');
}
});
};
};
</script><input onclick="myCall()" type="button" value="Check" />[/code]

* Zumindest hoffe ich das. PHP ist nicht mein Fachgebiet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hast du da was gesehen was eigtnlich nicht so sein sollte ? ^^
Wie gesagt, ich verstehe nicht viel von PHP. Ich habe den Eindruck, dass Product nirgends aufgerufen wird. Es kommt mir auch merkwürdig vor, dass du die Funktionen alle ineinander verschachtelt hast. Aber vielleicht muss das hier so sein.

Vielleicht kann jemand, der sich mit PHP und Ajax besser auskennt, mehr dazu sagen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie gesagt, ich verstehe nicht viel von PHP. Ich habe den Eindruck, dass Product nirgends aufgerufen wird. Es kommt mir auch merkwürdig vor, dass du die Funktionen alle ineinander verschachtelt hast.

Anonyme Funktion gibt es nicht nur in PHP und JavaScript sonder auch z.B. in C++ und der Ajax-Request jQuery.ajax() | jQuery API Documentation ist auch in der Doku zu finden.Warum aber nicht der Code konsistent gehalten ist, das sollte man sich mal überlegen, denn es werden anonyme Funktionen und Funktionen mittels Name gemischt. Zusätzlich empfehle ich die Verwendung eines Debuggers, den eigentlicher jeder Browser bietet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...