json_encode将数据发送回js

时间:2015-04-21 10:43:40

标签: javascript jquery ajax

我正在创建一个简单的上传脚本。我使用一个简单的表单让人们上传图片,然后外部PHP脚本将上传图片并将一些变量返回到上传页面。

但我无法让部分人员回归工作。目前我正在使用这个:

还包含表单的页面:

form_data.append('file', file_data);
$.ajax({
            url: 'upload.php', // point to server-side PHP script 
            dataType: 'text',  // what to expect back from the PHP script, if anything
            cache: false,
            contentType: false,
            processData: false,
            data: form_data,                         
            type: 'post',
            success: function(response){
                document.getElementById("titel" + amount).innerHTML = response['naam'];

});

应该返回一些数据的上传页面:

echo json_encode(array('naam'=>$naam));

此脚本返回undefined ..

如果我在表单页面上删除了[' naam']后会打印出来: {" NAAM":" test.png"}

希望有人知道我做错了什么。 Thanx提前!

3 个答案:

答案 0 :(得分:2)

你说:

dataType: 'text',  // what to expect back from the PHP script, if anything

...所以jQuery将忽略服务器声称数据的内容(这似乎是HTML,因为您没有更改PHP中的Content-Type标头)并将响应处理为纯文本。

因此,

response将是纯文本字符串,而不是解析JSON的结果。

dataType更改为"json"

答案 1 :(得分:1)

您从服务器获得的响应是​​string。要将其用作对象,您需要使用JSON.parse()将其解析为JSON格式。

var obj = JSON.parse(response);

然后你可以使用:

obj.naam;

从对象中获取naam的值。

答案 2 :(得分:-1)

请更改" text"的数据类型到" json"然后使用JSON.parse解析该JSON(//返回值")。

Var jsonObject = JSON.parse(" Ajax Response object"); 然后使用它jsonObject.keyName,它将返回值。