AJAX请求返回Javascript获胜't返回特定函数,但将返回其他函数

AJAX request returning Javascript won't return a particular function but will return others

本文关键字:返回 函数 其他 Javascript 请求 获胜 AJAX      更新时间:2024-04-13

所以我是Javascript的新手,所以这可能是一个简单的修复。。。我想做的是返回一些PHP生成的Javascript,如下所示:

$.ajax({
   type: 'GET',
   dataType: 'script',
   url: "process.php?q=" + nextOne,
   cache: false,
   success: function(result) { 
   var points = poly();
   var view = view();
   console.log(poly());                                   
       }
   });

在GET函数上执行的PHP代码每次都成功地返回以下代码:

 function poly() { var polygon = [ [44.0979657883536, -77.59741353683408], [44.09800110003289, -77.59742583167298], [44.0980628953913, -77.59745042091538], [44.09809820673028, -77.59747500869589], [44.09815117444222, -77.59748730467579], [44.09818648579019, -77.59751189254636], [44.09824828154319, -77.59752418914519], [44.09830124890875, -77.59754877818678], [44.09836304401723, -77.59758566057246], [44.09844249510888, -77.59762254440908], [44.09855725698249, -77.5977086026865], [44.09863670785234, -77.59775778001215], [44.0988132654151, -77.5978684291988], [44.09899865055464, -77.59800366685273], [44.099157552135, -77.59812661066638], [44.09925465878388, -77.59820037721019], [44.09930762506249, -77.59827414098369], [44.09936059135786, -77.59834790500194], [44.09938707375796, -77.59840937369948], [44.09942238393646, -77.59848313660127], [44.09944886554787, -77.59856919181473], [44.09946651905435, -77.59865524685266], [44.09946651545066, -77.59876588717155], [44.09946651258768, -77.59885194044027], [44.09946651051048, -77.59891340743259], [44.09946650840645, -77.59897487447928], [44.09944884869306, -77.59907322011854], [44.09942235991026, -77.59919615139923], [44.09936938613104, -77.59933137393786], [44.09929875346595, -77.59952806157649], [44.09922812091607, -77.59971245627803], [44.0991398332644, -77.59985996814586], [44.09907803141549, -77.59997060283777], [44.09901623062632, -77.60005665047542], [44.09893677444724, -77.60011810902354], [44.09889263256964, -77.60014269102098], [44.0988396637248, -77.60014268500156], [44.09879552299976, -77.60014268001041], [44.09875138228544, -77.60014267504206], [44.0986984140636, -77.6001303756445], [44.09864544644561, -77.60010578285841], [44.09859247938493, -77.60006889673586], [44.09850420107129, -77.60000742014995], [44.09846006278729, -77.5999582419273], [44.09834530251719, -77.59984758986654], [44.09823054177884, -77.59974923232423], [44.0980892979686, -77.59962628606064], [44.09794805423672, -77.59950334086375], [44.09781563809948, -77.59939269104248], [44.09773618821324, -77.59933121854448], [44.09762142489915, -77.5992943294499], [44.09755080027261, -77.59929432346378], [44.09746251947693, -77.5992943160516], [44.09738306614857, -77.59930660246103], [44.09725064310649, -77.59934347054637], [44.09714470420811, -77.59938034083626], [44.09691516732349, -77.59950325144526], [44.09665031521845, -77.59966303842049], [44.09636780340659, -77.59985970230275], [44.09595286215229, -77.60013011364448], [44.09589106224593, -77.60016698752585], [44.0958734066763, -77.60015469320798], [44.09582926644982, -77.60014239682909], [44.09579395667541, -77.60009322247899], [44.09576747595455, -77.60003175602542], [44.09574099598146, -77.59995799683112], [44.0957056861353, -77.59990882281723], [44.09567037856668, -77.5998227708729], [44.09562624284954, -77.59973671809175], [44.09553796880017, -77.59960149149188], [44.09547617706166, -77.59950314546113], [44.0953349446695, -77.59917123462215], [44.09529964265098, -77.59897455110928], [44.09525551601103, -77.59870411256358], [44.09524670194121, -77.59842138462815], [44.09524671692267, -77.59810178086126], [44.09524673176193, -77.59775759351884], [44.09524674479974, -77.59742569960808], [44.09525558357575, -77.59713068427324], [44.09529090391865, -77.59689713179387], [44.09530856957198, -77.59657753331807], [44.09530857256068, -77.59646690312057], [44.09530857478986, -77.59638085751901], [44.09530857602622, -77.59633168850351] ]; return polygon; } function view() { var view = [-44.097102112991, 77.59840744055]; return view; }

很抱歉这太混乱了,但这是生成的代码。因此,当执行此操作时,view();函数将正常工作。然而,poly函数不起作用。Safari一直给我这个错误:

ReferenceError:找不到变量:poly

我尝试过将所有的结果代码粘贴到我的网页中,它是有效的,但只有在使用AJAX时我才会遇到这个问题。如果这还不够,请告诉我,这是我在这里的第一篇帖子。

提前感谢

是否

如果poly()函数在.php文件中,则不会从调用.js文件中引用它。您可以做的是研究在网络上发送JSON数据。因此,PHP文件将呈现JSON&然后使用JSON.parse()将其转换回JS对象。

PHP会输出这样的东西:

{[44.0979657883536, -77.59741353683408], [44.09800110003289, -77.59742583167298], ...}

JavaScript文件将其读取到数据变量&转换为:

var obj = JSON.parse(data);

然后你的代码可能看起来像这样:

$.ajax({
   type: 'GET',
   dataType: 'json',
   url: "process.php?q=" + nextOne,
   cache: false,
   success: function(result) {
       var points = JSON.parse(result);
       console.log(points);                                   
   }
});

这里看起来有些混乱。当您使用ajax在服务器上请求某个内容时,浏览器会将服务器返回的代码作为字符串(您的响应变量)。如果你的PHP发出了一个有效的Javascript函数,这并不意味着它已经准备好执行了。

首先尝试console.log()响应,看看来自服务器的回复是否符合您的期望。

如果你想执行代码,那么使用eval()eval(response)应该完成这项工作。eval()获取一个带有javascript代码的字符串并执行它

请记住,eval是邪恶的,通常从PHP返回javascript代码是一个糟糕的设计选择,尤其是如果你想对其进行eval()