2012-06-19 2 views
0

У меня есть следующая функция jquery, которая отправляется в iframe. Сообщение, отправленное с PHP, - json. Я не могу понять, как я могу получить это сообщение в jquery, чтобы я мог отобразить его пользователю.JQuery получает сообщение json от PHP

function IframeSubmit(){ 
    // remove iframe if exists 
    $('#hiddenIframe').remove(); 

    // change target attribute on form 
    form.attr('target', 'hiddenIframe'); 

    // create and add iframe to page 
    $('<iframe />', { 
     name: 'hiddenIframe', 
     id: 'hiddenIframe', 
     style: 'display:none' 
    }).appendTo('body'); 

    // on response from php file 
    $('#hiddenIframe').load(function(){ 
     // process received message here ... 
    }); 
} 

Спасибо!

+1

использовать ajax, echo a json obj ect через php 'json_encode ($ string);' – gorelative

+1

Метод '.load()' предназначен для загрузки содержимого html в элемент, а не JSON. попробуйте ['$ .getJSON()'] (http://api.jquery.com/jQuery.getJSON/) и обработайте результаты в своем обратном вызове. – nnnnnn

+0

Ошибка: getJSON() не является функцией. – user1002039

ответ

0

У меня есть подобный код:

$(document).ready(function(){ 
    $('form#myform').submit(function(){ 
      $("#hiddenIframe").remove();  
      $('<iframe name="hiddenIframe" />').appendTo('body').attr({'id': 'hiddenIframe'}); 
      var Frame = $('#hiddenIframe'); 
      var newSrc = 'about:blank?nocache=' + Math.random(); //force new URL 
      Frame.attr('src', newSrc); 
      var iframe = $('#hiddenIframe').load(function(){ 
       var response = iframe.contents().find('body').html(); 
       var txt = $.parseJSON(response); 
       $('#message').append(txt.message); 
       if(txt.error == false){ 
        $.ajax({ 
         type: 'POST', 
         url: '?myurl', 
         dataType: 'json', 
         data: { 
          //some data 
         }, 
         success: function(data){ 
          //some action 
         } 
        });           
       }   
     });            
    }); 
}); 

выход в плавающий фрейм:

var response = iframe.contents().find('body').html(); 
var txt = $.parseJSON(response); 

реакция чтения как: txt.error или txt.message

PHP часть:

$this->message['error'] = true; 
$this->message['message'] = "Problem!"; 

echo/print json_encode($this->message); 
Смежные вопросы