2016-04-08 14 views
0

私はJavascriptを初めて使うので、これは簡単な修正かもしれません...私がやっていることは、JavaScriptを返すAJAXリクエストは特定の関数を返しませんが、他のものを返します

$.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();関数はうまく動作します。しかし、多機能は機能しません。 Safariは私にこのエラーを与え続け:

ReferenceError: Can't find variable: poly

私は私のウェブページにすべての結果コードを貼り付けてみた、それは動作しますが、その私がこの問題に遭遇することAJAXを使用している場合のみ。これで十分ではない情報が私に教えてください、これは私の最初の投稿です。あなたがここにいくつかの混乱を作っているように見える事前に

おかげで、

ウィル

+0

PHPサーバーはJavascriptではなくJSONを生成する必要があります。そして、受信側で 'JSON.parse()'を使ってJSONをJavascriptデータに変換することができます。あるいは、PHPがデータ型を適切にタグ付けしていれば自動的にjQueryが自動的に行います。これは、物事を行う安全な方法と共通の方法の両方です。 – jfriend00

+0

ポリおよびビュー関数はjavascriptで定義されていないためです。代わりにjavascript関数全体を返します。 PHPからjasonデータを返します。 –

答えて

0

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);         
    } 
}); 
+0

ありがとう!それはそれを固定した、私はなぜ私が最初にそれをしなかったのか分からない! –

-1

。 ajaxを使用してサーバー上で何かを要求すると、ブラウザーはサーバーから返されたコードを文字列(応答変数)として取得します。 PHPが有効なJavascript関数を発行しても、実行準備ができているとは限りません。

まず、console.log()レスポンスを試して、サーバーからの応答が期待どおりかどうかを確認してください。

コードを実行したい場合は、eval()eval(response)を使用してください。 eval()はJavaScriptコードで文字列を取り出して実行します。

evalは悪であり、PHPのJavaScriptコードをeval()したい場合は、通常はJavaScriptのコードを返すことができません。

+0

あなたの答えをありがとう! –

関連する問題