0

我想发送一个带有参数的 url,这些参数是由带有 javascript 的表单获取的值,我想使用 JSON 来执行它,但是当我调试时我看到这个错误:Uncaught ReferenceError: name is not defined..

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

这是调用值名称和 msg 时的语法错误,但我不知道如何修复它或在 go 函数中

4

2 回答 2

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

更新:您需要将 name 和 msg 设为全局:

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

于 2013-08-21T09:49:59.040 回答
0

这两个变量在另一个函数中

嗯,这就解释了。一个函数的局部变量不能被另一个函数访问。

您必须在两个函数共享的范围内定义变量。这可能是全局范围,但您应该避免创建全局变量(无论如何,您不能有一个带名称的全局变量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();
}());
于 2013-08-21T10:06:19.987 回答