2010-08-08 5 views
0

Я ПОЛНОСТЬЮ не получаю это, поэтому я собираюсь спросить. Это упражнение, которое я использую, чтобы попытаться совместно изучить JSON и jQuery. Я уверен, что мой код делает все, что он должен, но я не могу понять, как: а) прочитать возвращаемый JSON и b) иметь возможность использовать результат впоследствии (который я догадка будет решена с помощью а). Таким образом, код из основного ASP (Classic) странице:jQuery JSON return [Object object]

function validate_email_exists() { 
var email = new String($('#txt_email').val()); 
var sender = "[email protected]"; 
var validatorURL = "email_validator.asp?email=" + email + "&sender="+ sender; 
var obj = jQuery.parseJSON('{"isValid":true}'); 
$.getJSON(validatorURL); 

}

И страница, которая вызывается возвращает это точно:

{"isValid":true} 

Так что я проверил и это действительно JSON, но я просто не могу понять из каких-либо учебников, которые я нашел еще, как справиться с тем, что возвращается. Все, что я хочу сделать, это отправить переменную «validatorURL» на страницу «email_validator.asp» и сообщить ей, является ли она действительной (isValid = true) или нет (isValid = false) и поместить этот ответ в переменную, которую я могу затем используйте на странице. Это сводит меня с ума, поэтому любая помощь будет отличной, даже указывая на пример (по какой-то причине jQuery один за мной).

+0

Как и того, чтобы использовать функцию обратного вызова в 'getJSON', как вывешен Мэтью, вы также должны потерять' новой строки() ':' Вэл() 'уже возвращает строку, и' новый String() 'делает что-то, чего вы никогда не хотите в JS. Кроме того, при создании URL-адресов вы должны использовать 'encodeURLComponent()' over values, которые вставляются как компоненты запроса или пути, такие как переменные 'email' и' sender'. – bobince

ответ

3
function validate_email_exists() { 
    var email = new String($('#txt_email').val()); 
    var sender = "[email protected]"; 
    var validatorURL = "email_validator.asp?email=" + email + "&sender="+ sender; 
    $.getJSON(validatorURL, function(response) { 
     if(response.isValid) {/* it's valid! */} else {/* not valid */} 
    }); 
} 
+1

Возможно, вы должны добавить это (потому что это асинхронный), вы не можете установить переменную в if/else, а затем попытаться вернуть ее из 'validate_email_exists'. Из-за этого может быть полезно передать обратный вызов 'validate_email_exists'. Обратный вызов 'getJSON' затем вызовет это, передав' response.isValid'. –

+0

Ничего себе, это было быстро. Спасибо очень много. – stephmoreland

+0

Теперь, когда я вижу это, это имеет смысл. Я просто не мог понять, что я должен был назвать возвращаемое значение, и ТОГДА я мог бы его использовать. Он отлично работает, благодаря mattbasta! – stephmoreland