0

私はこのようなものを作ろうとしました:

function ajaxGetId(val)
{
    $.ajax({
      type: "POST",
      url: "getID.php", // Your PHP script URL
      data: { html: val } // Data you want to pass to the PHP script
    }).done(function( response ) {
      alert( response ); // Do something with what the PHP output or die silently
    });
}

phpファイルは、たとえば次のようなものです。

$url = $_POST['url'];
$parts = parse_url($url);
return $parts;

問題は、大量の HTML タグを含む巨大なアラートが表示されることです。何が問題なのか教えてもらえますか?

4

3 に答える 3

2

これはあなたが思っていることをしていません:

return $parts;

AJAX 呼び出しを行う場合、PHP で関数を呼び出しているわけではありません。ページをリクエストしています。そのページは、基本的に、ブラウザーで表示する他のページと何ら変わりはありません。唯一の違いは、そのページがレンダリングするものです。

通常、AJAX 呼び出しでは、JSON データをレンダリングする必要があります。たとえば、AJAX を介して動的コンテンツをページにロードしている場合は、HTML をレンダリングすることもできます。

そうは言っても、使用しないページに情報をレンダリングするためにreturn. ただし、次のようなものを使用できますecho

$url = $_POST['url'];
$parts = parse_url($url);
echo $parts;

これにより、レスポンスは投稿されたurl値のプレーンテキスト表現になります。(実際には「url」という値も投稿していないことに注意してください。代わりに: を使用するつもりだと思います$_POST['html']。)

値を JSON データとしてエコーすることで、これにさらに構造を追加できます。例えば:

echo '{ "url" : "' . $parts . '" }';

次に、JavaScript コードで、プレーン テキストではなく実際の JSON オブジェクトを取得し、そのプロパティに直接アクセスできます。

alert(response.url);

データがより構造化されると、 PHP のjson_encode()関数を使用して JSON データに簡単に変換し、クライアントにエコーすることができます。

于 2013-09-13T13:50:35.467 に答える
0

$url = $_POST['html']; を使用してみてください。$url = $_POST['url']; の代わりに

それはうまくいきます

于 2013-09-13T13:48:21.877 に答える
0

これに変更します:

htmlの代わりにurlとのecho代わりにreturn:

$url = $_POST['html'];
$parts = parse_url($url);
echo $parts;

あなたのajaxでは、data: { html: val }これhtmlはあなたがリクエストした変数です。

于 2013-09-13T13:42:40.887 に答える