0

これが適切かどうか疑問に思っていました。

Ajax呼び出しから返されたjavascriptコードを実行することは可能ですか?

ser = $('#new_customer_ input').serialize();

$.ajax({
type: 'POST',
url: "ajax/newCustomer.php",
data: ser,
success: function(data)
    {
        $('div#result').html(data);
    }
});

phpファイルが次のようなものを返すとします。

<script>$('input#customer_name').val('something');</script>

これは応答時に実行されます。

これは機能しますが、私の質問は次のとおりです。これは正しいですか、それとも他のことをする必要がありますか?

4

2 に答える 2

1

使用できます

eval('js_code');

そのために。ただし、文字列内のコードが非常に信頼できるソースからのものであることを確認してください(Webサービスからのものである可能性があります)。

あなたがそれをしている方法は正しいです。そして、evalを使用しない方が良い

于 2012-12-09T03:12:43.523 に答える
1

あなたがしていることは間違っていないと思いますが、問題はあなたのJavaScriptがあなたに全体像を教えてくれないということです。PHPからjsを生成し、それをAjaxを介してロードしているため、そのコードを分析およびデバッグしようとすると、何が起こっているのかを理解するのが難しくなる可能性があります。たとえば、input#customer_name変更からの値は表示されますが、PHPによって生成されて動的に提供されるため、それを変更するコードは見つかりません。

PHPからデータだけを送信し、そのデータを使用するロジックをjsファイルに保持することをお勧めします。あなたが投稿したコードを考えるとecho 'something'、PHPだけで、jsからこれを行うことができます。

$.ajax({
    type: 'POST',
    url: "ajax/newCustomer.php",
    data: ser,
    success: function(data)
    {
        $('input#customer_name').val(data);
    }
});

より複雑なデータを送信する必要がある場合は、JSON(echo json_encode($myarray);)としてエンコードされたPHP配列を使用できます。次に、JavaScriptdataで配列またはオブジェクトになり、必要に応じてループしたり、名前付きプロパティにアクセスしたりできます(jQueryは自動的にJSONを解析します)。

たとえば、次のPHPについて考えてみます。

$array = array(
    'foo' => 'bar',
    'bar' => true,
    'baz' => 5
);
echo json_encode($array);

その場合、dataajaxコールバックの引数は次のようなjsオブジェクトになります。

{
'foo' : 'bar',
'bar' : true,
'baz' : 5
}

data.foo、、data.barおよびを使用してこれらのプロパティにアクセスできますdata.baz

于 2012-12-09T23:43:57.577 に答える