2013-08-21 2 views
0

Я хочу отправить URL-адрес с параметрами, эти параметры являются значениями, принимаемыми формой с помощью javascript, и я хочу использовать JSON для этого, но когда я отлаживаю, я вижу эту ошибку: Неотдача ReferenceError : имя не определено ..отправлять параметры как значения с использованием синтаксиса JSON

function recup() 
{ 
var selectElmt = document.getElementById("name"); 
var selectcat = document.getElementById("msg"); 

var name = selectElmt.options[selectElmt.selectedIndex].value; 
var msg = selectcat.options[selectcat.selectedIndex].value; 

} 


    function go() {  // button send who call the function go 

     var p_url="http://mysite.com/class?name=" + name + "&message=" + msg + 
       $.getJSON(p_url, { 

      }).done(function(data) { 

       $.each(data, function (key, field) { 
        alert(field); 
       }); 
      }); 
       return false; 
    } 

это ошибка синтаксиса при вызове имя значения и сбщ, но я надеваю "знаю, как это исправить, или в функции идут

+0

Символ 'ReferenceError' не ошибка синтаксиса, его ошибка во время выполнения. Это означает, что переменная, которую вы пытаетесь получить, не существует в текущей области. Это также означает, что ваш код синтаксически корректен, иначе он не сможет работать вообще. Теперь у вас есть 'var name =" test ";' в начале или в вашем фрагменте, но есть также зависание '}', что почему-то предполагает, что переменные не определены там, где 'go' может их видеть. Код в вашем сообщении имеет действительно синтаксические ошибки, но это, вероятно, связано с плохим копированием и вставкой. Пожалуйста, отправьте код, который действительно воспроизводит проблему. –

+0

Кроме того, в вашем примере есть JSON. –

+0

@FelixKling я удалил болтаться}, просто плохая копия и вставка, но как их положить так, можно увидеть их? – neustre

ответ

0

Вы две ошибки, закрывающая фигурная скобки и символа плюс, код будет следующим:

var msg = "hello"; // i just simplified the value 
var name = "test"; 

function go() {  // button send who call the function go 

    var p_url="http://mysite.com/class?name=" + name + "&message=" + msg; 

    $.getJSON(p_url, { 

    }).done(function(data) { 
     $.each(data, function (key, field) { 
      alert(field); 
     }); 
    }); 
    return false; 
} 

UPDATE: Вам нужно сделать имя и сообща глобальным:

var name, msg; 

function recup() { 
    var selectElmt = document.getElementById("name"); 
    var selectcat = document.getElementById("msg"); 

    name = selectElmt.options[selectElmt.selectedIndex].value; 
    msg = selectcat.options[selectcat.selectedIndex].value; 
} 


function go() {  // button send who call the function go 

    var p_url="http://mysite.com/class?name=" + name + "&message=" + msg; 
    $.getJSON(p_url, { 

    }).done(function(data) { 

     $.each(data, function (key, field) { 
      alert(field); 
     }); 
    }); 
    return false; 
} 

и recup нужно быть выполнены до go

+0

У меня есть что добавить! я забыл написать его. две переменные находятся в другой функции, называемой recup(), которая принимает переменные из формы. Поэтому теперь я вижу, почему функция go не может их видеть, но как я могу это сделать, чтобы функция go знала переменные, которые я имею в функция recup .. – neustre

+0

@neustre, если они находятся в другой функции, тогда вам нужно объявить их вне этой функции и не использовать var при их назначении, поэтому они будут глобальными. – jcubic

+0

Я отредактировал код, это мой текущий код – neustre

0

the two variables are in another function

Ну, что объясняет. К другой переменной не может быть доступна переменная, которая является локальной для функции.

Вы должны определить переменные в области, разделяемой обеими функциями. Это может быть глобальная область действия, но вы должны избегать создания глобальных переменных (вы не можете иметь глобальную переменную с именем name в любом случае, поскольку она уже существует).

Если вы хотите присвоить значение переменной в более высокой области, используйте name = ...; вместо var name = ...;.

Пример:

(function() { 
    // create a new scope so that we don't pollute the global scope 

    // this variable can be accessed by both functions 
    var answer; 

    function foo() { 
     // don't use `var` here, otherwise you create a local variable which 
     // shadows the variable with the same name in a higher scope 
     answer = 42; 
    } 

    function bar() { 
     alert(answer); 
    } 

    foo(); 
    bar(); 
}()); 
+0

Я обновлю код, чтобы вы могли видеть – neustre

+0

@neustre: Спасибо за это, это ничего не меняет для меня. Это точно так же, как я писал. –

+0

Большое спасибо – neustre

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