2016-12-13 7 views
1

は、私には、以下の機能を持っている:活字体とjqueryのAJAX

更新日:echo 'hi'を返しcheck.php今のところ$アヤックス

searchAjax({url = 'app/php/check.php', data}: {url: any, data: any}): any 
{ 
    return $.ajax({ 
     url: url, 
     type: 'post', 
     dataType: 'text', 
     data: { data }, 
     success: function (return_data) 
     { 
      return String(return_data); 
     }, 
     error: function (xhr, status, error) 
     { 
      var err = eval("(" + xhr.responseText + ")"); 
      console.log(err.Message); 
      return err.Message; 
     } 
    }); 
} 

に追加リターンを、。テストのために、私はconsole.logに応答しようとしています(この場合はreturn_data)。しかし、console.logにしようとするとエラーEXCEPTION: hi is not definedが出ます。

更新: ここでは、実際のレスポンスを含むたくさんのstuffとresponseTextを持つオブジェクトを取得しました。

+1

このAngular2には、このようなリクエストに@ angular/httpを使用しない理由がタグ付けされています。 –

+1

@JJB Angular2に書き直す必要のある古いコードがあるかもしれませんか? –

+1

@RomanC だからこそ、私はそれがちょうどその要求であり、彼はそれのためだけにjQueryを使用しているので、実際には@ angular/httpを使用する必要があるからです。 –

答えて

1

あなたの評価のようなサウンドは、あなたが得ると思うテキストを取得していません。私はあなたの結果を信じています: "echo 'hi'"はアポストロフィを取り除いているので、実際に "echo hi"を評価しています。これはajaxクライアントの問題になります。または、APIがそれを剥奪しています。ブラウザがAPIから受け取っているものを確認してください。

ネイティブのjavacriptにエコーはありません

+0

'echo" hi "'はPHPですので、返されるのは 'hi'だけです。私は少しそれを働いたかもしれないと思うが、私は他人から提案されたhttpを試みるかもしれないと思う。 –

+0

次に、定義されていない "hi"を実際に評価しています。おそらくあなたがやりたかったのは、コンソールで結果を見たいと思った場合、eval console.log( "hi")です。基本的にAPIレスポンスで引用されたテキストです。 –

+0

私は適切な返事をしなかったのが主な原因でした。今私はリターンでそれを更新しました、それは私に応答テキストのオブジェクトを返しますが、私はそれを抽出するように見えることはできません。私はあなたがajaxの 'success'関数でそれを行うことができることを知っていますが、代わりにangleの' http'を見るでしょう。 –