2015-04-21 4 views
0

Im создает простой сценарий загрузки. Я использую простую форму, позволяющую людям загружать картинку, а затем внешний скрипт php загружает изображение и возвращает некоторые vars на страницу загрузки.json_encode отправить данные обратно в js

Но я не могу получить часть, чтобы вернуть некоторые вары на работу. В настоящее время им с помощью этого:

страница, которая содержит форму:

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)); 

Это скрипты возвращает неопределенный ..

Если я удалю ['naam'] после ответа на странице формы, он распечатает: {"naam": "test.png"}

Надеюсь, что кто-то знает, что я делаю неправильно. Thanx заранее!

+0

Почему вы эхо его возвращаете? –

+1

@whitelettersandblankspaces - поскольку отправка контента в STDOUT происходит, вы выводите данные обратно клиенту с PHP, и это то, что 'echo' 'return' - это то, как вы передаете его из функции вызывающей функции * внутри * PHP. – Quentin

+0

В вашей ситуации я не буду эхом ничего, я буду возвращать json, который я буду использовать с javascript' resp onse.naam' без разбора. обратите внимание на тип данных –

ответ

2

Вы сказали:

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

... так JQuery будет игнорировать то, что утверждает, что сервер данные (которые, как представляется, HTML, как вы не изменили заголовок Content-Type в вашем PHP) и обрабатывать как будто это был обычный текст.

response поэтому будет простой текстовой строкой, а не результатами разбора JSON.

Изменить dataType"json".

1

Ответ, который вы получаете с сервера: string. Чтобы использовать его в качестве объекта, вам необходимо проанализировать его в формате JSON, используя JSON.parse().

var obj = JSON.parse(response); 

Затем вы можете использовать:

obj.naam; 

, чтобы получить значение naam от объекта.

-1

Пожалуйста, измените тип данных из "текста" в "JSON", а затем разобрать, что JSON с помощью JSON.parse (// возвращаемое значение ")

Var JSONObject = JSON.parse. (" Ajax Response объект "); затем используйте его jsonObject.keyName, и он вернет значение.

+0

Это приведет к тому, что jQuery проанализирует JSON и заполнит «ответ» результатом. Затем вы пытаетесь «JSON.parse», он будет неявным образом преобразовать его в нечто вроде «[Object object]» », а затем попытаться проанализировать это как JSON ..., который будет терпеть неудачу. – Quentin

+0

Извините, я неправильно интерпретирую этот вопрос. Поскольку я ожидал, что объект JSON будет получен из этого запроса через этот запрос. Спасибо, что исправил меня в этом. – blackOcean

Смежные вопросы