将变量设置为ajax url

时间:2017-04-18 00:08:46

标签: javascript html ajax asynchronous

我试图将 ajax网址设置为变量res

变量res是不同字符串的组合。 您可以查看代码。

HTML

    <form id="frm1">
    <input type="text" name="fname" value="" placeholder="Update Location">
    </form>
<button class="btn btn-default pull-right" onclick="loadWeather()"type="button">
 Search 
</button>

我在这里尝试获取表单中的文字。

的.js

window.onload = loadWeather();

var part = "http://api.openweathermap.org/data/2.5/weather?q=";
var a = encodeURI(part);
var b = document.getElementById("frm1");
var text = b.elements[0].value;
var urll = "&units=metric&appid=MYKEY";
var c = encodeURI(urll);

var res = a + text + c;

function loadWeather() {
    $.ajax({
        url: res,

当我在控制台中检查res的值时,它显示为未定义。

另一个错误是无法读取属性&#39;元素&#39;为null     在blog.js:7

我想要的是最后的网址必须等于这样的内容 -

http://api.openweathermap.org/data/2.5/weather?q=FORMDATA&units=metric&appid=MYKEY

1 个答案:

答案 0 :(得分:0)

您的代码中存在逻辑错误。在第一行:

window.onload = loadWeather();

您正在页面加载时调用函数loadWeather,这意味着此函数将在任何其他javascript代码之前立即调用。此时您尚未分配res变量,稍后将在调用函数后填充该变量。

您必须在变量赋值后调用该函数。例如,像这样的东西可以工作:

 // window.onload = loadWeather();
 var part = "http://api.openweathermap.org/data/2.5/weather?q=";
 var a = encodeURI(part);
 var b = document.getElementById("frm1");
 var text = b.elements[0].value;
 var urll = "&units=metric&appid=MYKEY";
 var c = encodeURI(urll);

 var res = a + text + c;
 loadWeather()
 function loadWeather() {
     console.log(res)
 }