使用JSON语法将参数作为值发送

时间:2013-08-21 09:45:29

标签: javascript json syntax-error

我想发送一个带参数的网址,这些参数是一个带有javascript的表单所采用的值,我想用JSON来做,但是当我调试时我看到这个错误:未捕获的ReferenceError:名称未定义..

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

调用值名称和消息时出现语法错误,但我不知道如何解决它或在go函数中

2 个答案:

答案 0 :(得分: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;
}

更新:您需要将名称和消息设为全局:

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

之前执行

答案 1 :(得分: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();
}());