javascript(ajax)和php一起工作?

时间:2014-09-13 22:43:13

标签: javascript php jquery ajax

我有一个问题,我的Js文件无法识别由ajax构建的php变量。 这是一个例子:

的index.php:

<script src="js.js">
</script>
<?
include('build.php');
<div id="brand">
<?
   echo $brandinput;
?>
</div>
//....more code
?>

build.php:

<script type="text/javascript">

    $(document).ready(function(){
     $.ajax({
       crossOrigin: true,
       dataType: "jsonp",
       type: "GET",
       url: "getBrand.php",
       data: info,
       success: function(data){
             $("#result").html(data); 
       }

     });
     </script>
     <?php $brandinput='<div id="result"></div>'; 
      ?>

js.js:

$(document).ready(function(){
//dosomething with div's in index.php
}

因此,我会尝试以最简单的方式解释这一点。我的index.php包含一个build.php,您可以看到调用ajax从另一个服务器检索数据。此数据位于php变量($brandinput)中,该变量将包含许多<div>,<input>,... etc.然后index.php echo $ brandinput,显示变量的所有内容。但是我有一个js.js改变了div,输入等等的外观。这个js没有识别变量$ brandinput的内容。

我想知道你是否有更多想法或我做错了什么...... 所有代码都运行良好,我测试了很多次(除了我之前说的) ajax调用工作正常,Index.php正确显示$braninput

P.S。 $brandinput是这样的:

<div id='BlackBerry'><img src='..\/images\/supporteddevices\/blackberry-logo.jpg' alt='blackberry-logo' width='75'><br><input class='adjustRadio' type='radio'

是的,它的效果也很好。

2 个答案:

答案 0 :(得分:0)

你可以尝试将你的<script>标签移到你的php代码之后:

<? include('build.php'); ?>
<div id="brand">
    <? echo $brandinput; ?>
</div>
<script src="js.js"></script>

//....more code

稍微不同的是,您应该考虑避免使用HTML和Javascript嵌入/混合PHP代码。看一下这个post以获得更好的方法,将数据从PHP传递到Javascript&#34;。

答案 1 :(得分:0)

实际上这是它应该如何工作,你需要做的是在执行js.js

中的函数之前等待ajax请求先完成

试试这种方式

// in build.php
$(document).ready(function () {
    var promise = $.ajax({
        crossOrigin: true,
        dataType: "jsonp",
        type: "GET",
        url: "getBrand.php",
        data: info,
        success: function (data) {
            $("#result").html(data);

            //dosomething with div's in index.php
        }
    });
});

或(假设在 build.php中的脚本之后加载了js.js,或者必须在之后加载js.js)

// in build.php
$(document).ready(function () {
    var promise = $.ajax({
        crossOrigin: true,
        dataType: "jsonp",
        type: "GET",
        url: "getBrand.php",
        data: info,
        success: function (data) {
            $("#result").html(data);
        }
    });
});

// in js.js
$(document).ready(function () {
    promise.then(function (data) {
        //dosomething with div's in index.php
    });
});

P.S

$brandinput只需保存分配给的字符串,并且永远不会使用ajax请求进行更改,其中ajax成功处理程序只是直接在客户端操作呈现的DOM。