首页 > 解决方案 > 通过 AJAX 返回坐标

问题描述

我正在尝试通过 AJAX 返回值。下面是我根据我发现的一些示例汇总的代码,它似乎有效,但我认为有更好的方法吗?

(async () => {
    const url = new URL("/ajax-page", window.location.origin);
            
    const headers = new Headers([
        [
            "Content-Type",
            "application/x-www-form-urlencoded; charset=UTF-8"
        ]
    ]);

    const body = new URLSearchParams([
        ["sl", slug]
    ]);
    
    const res = await fetch(url, {
        method: "POST",
        headers,
        body
    });
                        
    if (res.ok) {                                
        let mkr = await res.text();
            crd = mkr.split("|");  
            lat = crd[0],
            lon = crd[1];

          console.log(lat+' '+lon);
    }
})();

PHP (ajax 页面)

// php magic gets values
echo  $mar['lat'].'|'.$mar['lon'];

我什至需要使用(async () => {...})(); 不再?

标签: javascriptajax

解决方案


这些行:

lat = crd[0],
lon = crd[1];

不是变量声明(因为没有let关键字)。它使用逗号运算符,因此相当于:

lat = (crd[0], lon = crd[1])

逗号运算符返回第二个表达式的值,因此latlon都设置为crd[1]

此问题的原因是您以;而不是结束前两行,。整个声明应该是:

        let mkr = await res.text(),
            crd = mkr.split("|"),
            lat = crd[0],
            lon = crd[1];

如果您使用 IDE 的自动缩进功能,它会表明这不是您想要的方式分组。


推荐阅读