2013-12-06 3 views
1

У меня был файл json results.json Что показано ниже. И у меня был html-файл, содержащий некоторый скрипт. Это для получения данных. Когда я вхожу на html-страницу, которая вызывает функцию скрипта get_machFollow(que_script), эта функция предназначена для получения данных json-файла. Функция работает нормально и который предупреждает правильный вывод, но после этой функции верните некоторые данные на мою страницу HTML.Как вернуть обратно данные json со страницы сценария?

Мой JSON файл

{"mach_fol_4": {"match_l": 
     ["7","8","99"],"attempts":"0","feedback_true":"You are right!", 
    "feedback_false":"Sorry! wrong answer."}} 

Это моя функция сценария. Эта функция работает нормально, но я не могу предупредить возвращаемое значение с HTML-страницы. Это не определено.

function get_machFollow(que_script) 
{ 

     var return_var; 
     $.getJSON('results.json', function(data) { 
      return_var=data[que_script].match_r;  
      alert(return_var);//Working alert show correct output 
      return return_var;  
       }); 

} 

Это мой HTML-файл

<html> 
    <head> 
     <script type='text/javascript' src='js/jquery.min.js'></script> 
     <script> 
     $(document).ready(function(){ 
      var mach_follow_js; 
      mach_follow_js=get_machFollow('mach_fol_4'); 
      alert(mach_follow_js);//Wrong output 
     }); 
    </head> 
    <body> 
     <p>Hello world</p> 
    </body> 
    </html> 
+0

«$ .getJson» - это асинхронный вызов, поэтому, когда вы вызываете 'get_matchFollow' и пытаетесь оповестить ответ в следующей строке, ответ от ajax не пришел. Вот почему он подходит как неопределенный – sachinjain024

+0

Дайте мне идею получить значения из этого $ .getJson –

+0

Возможный дубликат [Как вернуть ответ от вызова AJAX?] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax -call) –

ответ

1

Существует несколько способов, которыми вы можете это сделать. Один из них: передайте обработчик обратного вызова вашему методу, который будет вызываться, когда вы получите ответ. Попробуйте следующее:

function get_machFollow(que_script, sCallback) 
{ 
     var return_var; 
     $.getJSON('results.json', function(data) { 
      return_var=data[que_script].match_r;  
      alert(return_var);//Working alert show correct output 
      sCallback.call(null /* context */, return_var);  
     }); 

} 

$(document).ready(function(){ 
    var mach_follow_js; 
    get_machFollow('mach_fol_4', function(output) { 
     alert(output); 
     match_follow_js = output; 
    }); 
}); 
+0

Ничего себе это работает .. Спасибо @blunderboy ... –

+0

Рад помочь :) – sachinjain024

1

вы планируете возвращение return_var; чтобы быть внутри области get_machFollow, потому что прямо сейчас ее внутри области функции jquery и не вернет значение на главную страницу

+0

Тогда как я могу получить эти значения? Мне нужно решение, а не совет. –

+0

Я не пробовал это с помощью jquery, но проверьте, возвращается ли метод $ .getJSON, если он не является void, вы можете назначить return_var = $ .getJSON ..., но сохранить return в getJSON и добавить новый к внешней функции – user18896654353

+0

$ .getJSON возвращает некоторые бесполезные объекты, чтобы показать, что функция готова. –

1

Здесь ниже данные JSON, полученные от AJAX. Он передает объект данных JSON в предупреждении. Вы можете использовать его как хотите. также может выполнять итерацию данных с использованием функции loop или $ .each.

$(document).ready(function(){ 
    var mach_follow_js; 
    // mach_follow_js=get_machFollow('mach_fol_4'); 

    //JSON Data Fetched by AJAX 
    $.ajax('results.json',{ 
     type:'GET', 
     dataType: "json", 
     jsonCallback: 'successCallback',    
     async: true, 
     beforeSend: function() { 
     //if you want to show loader 
    }, 
    complete: function() { 
     //hide loader after download data 
    }, 
    success: function (resultJSON) {          
     mach_follow_js = resultJSON;  // assigning to Global variable ProductResult     
     alert(mach_follow_js); 
     console.log(mach_follow_js); 
    }, 
    error: function (request, error) { 
     alert('Network error has occurred please try again!');//error 
    } 
    })        

}); 
0

Использование Ajax функции обратного вызова $.getJSON() фактически является Ajax функции. Поэтому вам необходимо применить обратный вызов для выполнения этого действия.

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