Hallo,
ich möchte in meiner Webanwendung durch ein Ajax-Request ein Json objekt erhalten. Dann durch das Json Objekt iterieren und eine Select-(Combo)-Box daraus generieren.
Mein Problem ist:
Ich bekomme immer den Feher "SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data"
Woran könnte das liegen?
Ich arbeite mit PHP (und CakePHP), MySQL, JavaScript (und Jquery),
Mein JavaScript-Code:
Mein PHP-Code:
Das hier ist das Ergebnis, wenn ich mein Json Objekt ausgebe:
Was komisch ist:
wenn ich das Json Objekt nicht per Ajax generiere, sondern in JavaScript einfach hart Codiert speichere, dann funktioniert es.
Also so:
...obwohl das genau der gleiche "String" ist, den ich erhalte, wenn ich mir das Ajax-Ergebnis ausgeben lasse.
Prüfe ich jedoch in einer IF-Abfrage, ob die Strings gleich sind, erhalte ich false.
Hat jemand eine Idee, wo mein Fehler liegen könnte ??
ich möchte in meiner Webanwendung durch ein Ajax-Request ein Json objekt erhalten. Dann durch das Json Objekt iterieren und eine Select-(Combo)-Box daraus generieren.
Mein Problem ist:
Ich bekomme immer den Feher "SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data"
Woran könnte das liegen?
Ich arbeite mit PHP (und CakePHP), MySQL, JavaScript (und Jquery),
Mein JavaScript-Code:
Code:
$("#addfactcategory").click(function(){ $.ajax({ url: "/shyotrex/articles/getfactcategory/"+id, // Url to which the request is send type: "POST", // Data sent to server, a set of key/value pairs representing form fields and values contentType: false, // The content type used when sending data to the server. Default is: "application/x-www-form-urlencoded" cache: false, // To unable request pages to be cached processData:false, // To send DOMDocument or non processed data file it is set to false (i.e. data should not be in the form of string) success: function(data) // A function to be called if request succeeds { // alert(data); var selectbox =""; selectbox = "<select id=\"selbox\">"; selectbox += "<option value=\"0\" selected>Bitte auswählen</option>"; $.each(JSON.parse(data), function(idx, obj) { selectbox += "<option value=\""+obj.FactCategory.Fact_Category_ID+"\">"+obj.FactCategory.Title+"</option>" }); selectbox += "</select>"; $("#factcategoryresult").html(selectbox+"<br/>"+ $("#factcategoryresult").html()); } }); });
PHP-Code:
public function getfactcategory($id){
$this->autoRender = false;
$factcategories = $this->Article->Fact->FactCategory->find
(
'all'
);
$options['joins'] = array(
array('table' => 'Fact',
'alias' => 'fact',
'type' => 'INNER',
'conditions' => array(
'fact.Fact_Category_ID = FactCategory.Fact_Category_ID',
)
),
);
$options["fields"] = "*";
$factcategories = $this->Article->Fact->FactCategory->find
(
'all'
);
// echo '[{"FactCategory":{"Fact_Category_ID":"1","Title":"Ideale Reisezeit"},"Fact":[]},{"FactCategory":{"Fact_Category_ID":"2","Title":"Klimazone"},"Fact":[]}]';
echo json_encode($factcategories, JSON_UNESCAPED_UNICODE);
}
[{"FactCategory":{"Fact_Category_ID":"1","Title":"I deale Reisezeit"},"Fact":[]},{"FactCategory":{"Fact_Category_ID":"2","Title": "Klimazone"},"Fact":[]}]
wenn ich das Json Objekt nicht per Ajax generiere, sondern in JavaScript einfach hart Codiert speichere, dann funktioniert es.
Also so:
Code:
var test = '[{"FactCategory":{"Fact_Category_ID":"1","Title":"Ideale Reisezeit"},"Fact":[]},{"FactCategory":{"Fact_Category_ID":"2","Title":"Klimazone"},"Fact":[]}]';
Prüfe ich jedoch in einer IF-Abfrage, ob die Strings gleich sind, erhalte ich false.
Hat jemand eine Idee, wo mein Fehler liegen könnte ??
Kommentar