Jquery未捕获引用错误:$var未定义

Jquery未捕获引用错误:$var未定义,jquery,Jquery,我有一个问题,我不断得到的错误 未捕获引用错误:$shipping\u地址未定义 我的目标是使用id获取输入中的值,然后将它们发布到端点。请有人看一下我的代码,告诉我哪里出了问题 $(函数(){ //将这些存储在DOM中 var$address_1=$('#address_1').val(); var$shipping_address=$('#shipping address').val(); var$shipping_address2=$('shipping-address2').val();

我有一个问题,我不断得到的错误

未捕获引用错误:$shipping\u地址未定义

我的目标是使用id获取输入中的值,然后将它们发布到端点。请有人看一下我的代码,告诉我哪里出了问题

$(函数(){
//将这些存储在DOM中
var$address_1=$('#address_1').val();
var$shipping_address=$('#shipping address').val();
var$shipping_address2=$('shipping-address2').val();
var$shipping_city=$(“#shipping city”).val();
var$shipping_state=$('#shipping state').val();
var$shipping_zip=$('#shipping zip').val();
});
//这是我正在寻找的事件,因此我可以发布用户数据以供USPS验证
$(函数(){
$(“#ao#u solo”)。单击(函数(){
警报(“点击成功”。$shipping\u地址);
//console.log(“检查与账单地址相同”);
//在此处创建数组
变量用户\发货\地址={
配送地址:$shipping\u address.val(),
shipping_address2:$shipping_address2.val(),
shipping_city:$shipping_city.val(),
shipping_state:$shipping_state.val(),
shipping\u zip:$shipping\u zip.val()
};
//现在我调用Nates USPS API
$.ajax({
键入:“POST”,
url:“/async/addressverification”,
数据:用户地址,
成功:功能(净化的_地址){
var address_template=“”+
"" +
"" +
“建议的地址:”+
"" +
“{{shipping_address2}}”+
“{{shipping_address}}”+
“{{shipping_city}}”+
“{{希平州}”+
“{{shipping_zip}}”+
"" +
"" +
“
”; //一些使用Mustache.js的模板stud //函数添加\u净化\u地址(净化\u地址){ //$sanitized_address.append(Mustache.render(地址模板,sanitized_地址)); // } }, 错误:函数(){ //万一出了差错就出错。 警报(“保存订单时出错或lol”); } }); }); });
更新:

根据下面的评论,这里是新代码,但我仍然看到相同的错误

$(function() {
  var address_1 = $('#address_1').val();
  var shipping_address = $('#shipping-address').val();
  var shipping_address2 = $('#shipping-address2').val();
  var shipping_city = $('#shipping-city').val();
  var shipping_state = $('#shipping-state').val();
  var shipping_zip = $('#shipping-zip').val();

  $("#ao_solo").click(function() {
    alert('the click worked');
  //console.log("the same as billing addy is checked");
  // creating an array here
  var user_shipping_address ={
    shipping_address: $shipping_address.val(),
    shipping_address2: $shipping_address2.val(),
    shipping_city: $shipping_city.val(),
    shipping_state: $shipping_state.val(),
    shipping_zip: $shipping_zip.val()
  };

  // now im calling Nates USPS API
  $.ajax({
      type:'POST',
      url:'/async/addressverification',
      data: user_shipping_address,
      success: function(sanitized_address){
        alert('the click worked');
      },
      error: function(){
          //error in case something goes wrong.
          alert('error saving order or something lol');
        }

      });
  });
});

我照你说的做了,但我还是犯了同样的错误

$(function() {
  var address_1 = $('#address_1').val();
  var shipping_address = $('#shipping-address').val();
  var shipping_address2 = $('#shipping-address2').val();
  var shipping_city = $('#shipping-city').val();
  var shipping_state = $('#shipping-state').val();
  var shipping_zip = $('#shipping-zip').val();

  $("#ao_solo").click(function() {
    alert('the click worked');
  //console.log("the same as billing addy is checked");
  // creating an array here
  var user_shipping_address ={
    shipping_address: $shipping_address.val(),
    shipping_address2: $shipping_address2.val(),
    shipping_city: $shipping_city.val(),
    shipping_state: $shipping_state.val(),
    shipping_zip: $shipping_zip.val()
  };

  // now im calling Nates USPS API
  $.ajax({
      type:'POST',
      url:'/async/addressverification',
      data: user_shipping_address,
      success: function(sanitized_address){
        alert('the click worked');
      },
      error: function(){
          //error in case something goes wrong.
          alert('error saving order or something lol');
        }

      });
  });
});

问题是因为
$shipping\u address
和其他变量仅在您拥有的第一个document.ready处理程序的范围内定义。要解决此问题,请将它们合并为一个

另外请注意,
$
命名约定用于指示包含jQuery对象的变量。由于所处理的值是字符串,因此应删除
$
前缀

$(函数(){
var address_1=$('#address_1').val();
var shipping_address=$('#shipping address').val();
var shipping_address2=$('#shipping-address2').val();
var shipping_city=$('#shipping city').val();
var shipping_state=$('#shipping state').val();
var shipping_zip=$('#shipping zip').val();
$(“#ao#u solo”)。单击(函数(){
变量用户\发货\地址={
发货地址:发货地址,
发货地址2:发货地址2,
航运城市:航运城市,
装运状态:装运状态,
送货地址:送货地址
};
$.ajax({
键入:“POST”,
url:“/async/addressverification”,
数据:用户地址,
成功:功能(净化的_地址){
警报(“点击成功”);
},
错误:函数(){
警报(“保存订单时出错或lol”);
}
});
});
});

问题太多了。首先<代码>“点击成功”。$shipping\u地址是一个输入错误。与js的字符串连接是通过
+
完成的,而不是
,其次,您的变量都是在一个其他任何人都无法访问的范围内定义的,然后您在代码的其余部分中使用这些变量,就好像它们包含dom节点而不是值一样。在您的更新中,您的ajax是否意味着要在click事件中?缩进有点破损。
var x=$(“#装运地址”).val()
x.val()
$(“#装运地址”).val().val()
相同,显然不起作用(如上面的评论所述)。您能否确认错误仍然是
[var]未定义
且未更改为
无法读取属性“val”或未定义
?它们是非常不同的错误,如果没有其他打字错误/错误复制到问题中,您的第二个代码可能会产生第二个错误。如果您仍然遇到相同的错误,请使用可行的、可证明的代码片段更新您的问题。有关更多信息,请参阅。让它一次处理一个输入,并缩小错误的精确位置,您也会从中受益。我按照您在这里所说的做了,但我仍然会遇到相同的错误,请参见上文,这是因为您对字符串而不是jQuery对象调用
val()
。我更新了答案,给你完整的代码。请注意,您发送的对象似乎缺少
地址\u 1
值。我不确定这是故意的还是错误的。