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');

为了那个原因。但请确保字符串中的代码来自非常可靠的来源(可能来自您的网络服务)。

你这样做的方式是正确的。最好不要使用 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);

鉴于此,data您的 ajax 回调的参数将是一个 js 对象,如下所示:

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

data.foo您可以使用和data.bar访问这些属性data.baz

于 2012-12-09T23:43:57.577 回答