Ajax hiba
Sziasztok,
elakadtam teljessen.. Mi lehet a lenti hibaüzenet oka. Teszt rendszeremet tökéletesen fut az Ajax script, de amikor áttöltöm az éles rendszerbe a lenti hibaüzenetet dobja a konzol.
Teszt környezet: Linux | Éles környezet Windows Server
Hibaüzenet:
Ajax script:PHP amivel számolnék:Előre is köszönöm.......
■ elakadtam teljessen.. Mi lehet a lenti hibaüzenet oka. Teszt rendszeremet tökéletesen fut az Ajax script, de amikor áttöltöm az éles rendszerbe a lenti hibaüzenetet dobja a konzol.
Teszt környezet: Linux | Éles környezet Windows Server
Hibaüzenet:
Uncaught SyntaxError: Unexpected token in JSON at position 1
at JSON.parse (<anonymous>)
at Object.success (popup_index.php?iframe=iframe_munkalista_add_egyeditermek_v2&id=700829:34)
at i (jquery.js:2)
at Object.fireWith [as resolveWith] (jquery.js:2)
at A (jquery.js:4)
at XMLHttpRequest.<anonymous> (jquery.js:4)
at JSON.parse (<anonymous>)
at Object.success (popup_index.php?iframe=iframe_munkalista_add_egyeditermek_v2&id=700829:34)
at i (jquery.js:2)
at Object.fireWith [as resolveWith] (jquery.js:2)
at A (jquery.js:4)
at XMLHttpRequest.<anonymous> (jquery.js:4)
Ajax script:
$(document).ready(function() {
$('.ellenorzes').on('change', function() {
var szelesseg = $('#szelesseg').val();
var hosszusag = $('#hosszusag').val();
var vastagsag = $('#vastagsag').val();
if(vastagsag!="" && szelesseg!="" && hosszusag!="" ){
$.ajax({
url: "process.php",
type: "POST",
data: {
szelesseg: szelesseg,
hosszusag: hosszusag,
vastagsag: vastagsag
},
cache: false,
success: function(dataResult){
var sor = JSON.parse(dataResult);
if(sor.statusCode==200){
$("#success").show();
$("#error").hide();
$('#success').html('Van javasolt ár: ' + sor.javasoltar);
$('#egysegar').val(sor.javasoltar)
}
else if(sor.statusCode==201){
$("#success").hide();
$("#error").show();
$('#error').html('Nincs javasolt ár!');
}
}
});
}
else{
$("#success").hide();
$("#error").show();
$('#error').html('Ár javaslatra kevés adat áll rendelkezésre!');
}
});
});
include_once 'function.php';
$JavasoltAr = Arazas($_POST['vastagsag'], $_POST['szelesseg'], $_POST['hosszusag']);
if($JavasoltAr>0)
{
echo json_encode(array("statusCode"=>200, "javasoltar"=> $JavasoltAr));
}
else
{
echo json_encode(array("statusCode"=>201));
}
Csinálj egy olyat, hogy
Szia Inf! Köszi, hogy
Köszi, hogy foglalkozol vele!
Betettem, de nem lett sokkal bővebb az info:
VM147:2 Uncaught SyntaxError: Unexpected token in JSON at position 1
at JSON.parse (<anonymous>)
at Object.success (iframe=iframe_munkalista_add_egyeditermek_v2&id=700829:34)
at i (jquery.js:2)
at Object.fireWith [as resolveWith] (jquery.js:2)
at A (jquery.js:4)
at XMLHttpRequest.<anonymous> (jquery.js:4)
A success részbe tettem a consol.log-ot:
Így kezdődik a PHP 1-2 sora:
Ide application/json kéne
:-( Nem megy így sem
Csinálj már egy ilyet:
BOM?
Nem hiszem
Egyszerűen nem jutok egyről kettőre.... :-(
Azt mondod, hogy
Azaz, ha ugyanazok a fejlécek, és byte-ra pontosan ugyanaz a válasz, és ugyanaz a kód, akkor én nem látom, hogy hogyan ne működne. Szóval valamelyik ezek közül nem stimmel.
Azt mondom,
Saccra azt mondanám, hogy a
Tévedés joga fenntartva.
Javítsatok ki, ha rosszul tudom, de a http headerben a charset nem beállítja a kódolást, hanem jelzi a kliensnek, hogy ilyen kódolást kap. Ha a windows más formátumot használ, akkor is utf8-ként próbálja kezelni és abból már lehet ilyen gubanc. (szerintem)
Ascii karaktereknek mindegy
Rohadt rég volt, nem
ui: van még lehetőség valami ingyenes, de legális windows szerver telepítésére, amihez nem kell másik windows? Per pillanat kizárólag linuxaim vannak, nem tudom végigpróbálgatni az eszembe jutó dolgokat és legális windows-t sem szeretek a hálómon, nemhogy illegálist. :)
Újra átnézve a topic-ot,
Vagy nem tudom, már teljesen elvesztettem a fonalat.
A JSON.parse()-nak mindegy,
Vagy a másik lehetőség, amit inf mondott (meg én is, hogy ellenőrizd), csak lehet, hogy átsiklottál rajta: ha eltérőek a két szerveren a válasz fejlécek, akkor az egyiken (windows) lehet, hogy a jQuery automatikusan parse-olja a JSON választ, és utána egy objektumot próbálsz újra átküldeni a parse-oláson, ami nyilván nem fog menni. A találgatás elkerülése érdekében állítsd be a jQuery.ajax() hívásban a dataType-ot
json
-ra.dataType-ot json
ahogy a dataType-ot json-ra rakom egyből nem fut le semelyik szerveren sem.
Hogy küld-e speciális karaktert azt hogy tudom kideríteni ebben az esetben?
Én azt csinálnám, hogy
wget -O t.json http://teszt-szerver/ajax.php
wget -O e.json http://eles-szerver/ajax.php
(Behelyettesítve a valós URL-ekkel persze ;) )
majd első menetben valami normálisabb szövegszerkesztővel (pl vim) megnézni, esetleg diff segítségével összehasonlítani a kettőt, ha egyik sem hoz eredményt, akkor od -t x1c megmutatja a fájl tartalmát karakteresen és hexában is.
Persze ez csak akkor jó, ha a json fájl tartalmával van gond (pl. nulla hosszúságú?), ha a szerver által küldött header a gond, akkor passz. (Ágyúval verébre: http protokoll, még véletlenül sem https! és wireshark)
Mit jelent az, hogy nem fut
Olvasd el rendesen odafigyelve a dokumentációkat, meg amiket a kérdésedre írnak az emberek!
Ezt a problémát pédául hamar megoldhattad volna, ha elolvasod a jQuery.ajax() dokumentációját, bemásolod a hibaüzenetet a google-ba azzal megtoldva, hogy jquery ajax, vagy a callbacked első sorába berakod, hogy console.log(typeof dataResult).
Éles vs teszt böngésző?
A jquery verziója azonos?
(Nem értek hozzá, csak találgatok a régi tapasztalatok alapján)