jQuery发布到PHP没有返回完整的结果

时间:2011-09-04 14:29:49

标签: jquery

我试图找到一个解决方案,但是空白了。 选择链接时,我的页面需要交换信息。 基本上你选择一个选择的项目,然后主要的div与表格和数据有关你的选择。

我已经为此设置了正常运行的页面,但由于它全部是在PHP中,因此页面每次都会重新加载。这对于某些选择并不好,因为链接部分也有完全刷新(根据成员可能会很长)。因此,某些帐户的重新加载时间可能会有点长,这就是我选择jQuery换出的原因。

这是我的jQuery脚本。

        function swapContent(cv) {
        $("#input").html('<img src="28.gif"/>').show();
             var url = "scripts/run.php";
             $.post(url, {contentVar: cv} ,function(data) {
             $("#input").html(data).show();
              });
         }

PHP是简单的“echo”返回值。

if ($contentVar == true) {
echo $resultLoad;
} 

$ resultLoad; 是在PHP脚本中创建的已完成变量。 一切看起来都不错,似乎适用于大多数事情,但我对输出所有信息的“echo”有一点问题。

如果我在if语句中添加第二个“echo”,或者在if语句之后添加第二个“echo”,第一个echo将始终显示一半信息,其余信息显示正常。

这不是时间问题,因为我在jQuery和PHP中尝试过定时器以允许数据完成而没有任何影响。

如果您想亲眼看到它,可以转到test page(但您需要成为一名已登录的会员,其中包含上传的YouTube帐户) 别担心....免费网站:)

但如果你没有,那么这里就是screen capture

=============================================== ========================

修改

@Rusty Jeans(和其他任何人)我有一个用PHP运行的大脚本。 在PHP中,我有一个函数可以读取给定成员帐户的YouTube streem。 然后我解析出从YT服务器以SXML格式提供的所需的相关信息。然后,我检查一下我是否已在系统中播放该特定视频。 这一切都很好。问题来自编写HTML表单并显示它的最后一部分。

          include_once "dropdown_java.php";


          $resultLoad = $dropdown_java.'
          <table width="455" border="0">
           <tr>
            <td>
            <p><div class="thumbnail"><a href="' . $href . '\" target="_blank">
              <img src="' . $thumb . '" width="120" height="90" /></a></div></p>
              <p><b><u>VideoId:</u></b><br /> ' . $vid . '</p>
                 <p><b><u>Video Title:</u></b><br /> ' . $vidtitle . '</p> <p><b><u>Video Discription:</u></b><br /> ' . $vidDiscript . '</p>
             </td>
                 </tr>
                </table>   

                  <form action="php_uploader.php" method="post" enctype="multipart/form-data" name="myform" id="dataInput">
              <span class="alignRt"><b><u>Area Of Interest:</u></b><br />
                <select name="Area_Of_Interest" size="1" id="Area_Of_Interest"
                    onchange="setOptions(document.myform.Area_Of_Interest.options[document.myform.Area_Of_Interest.selectedIndex].value);">
                        '.$first_option_dropdown.'
                    </select><br /><br />
            <span class="alignRt"><b><u>Category:</u></b><br />
                    <select name="Category" id="Category" size="1">
                    <option value="" selected="selected"></option>
                </select>

         </span></p>


               <p><span class="alignRt"><b><u>Difficulty:</u></b>
               <input name="Difficulty" type="text" class="formFields" id="Difficulty" size="1" maxlength="1" />
               <font size="-1" >Difficulty out of 5 [ 1: Easy - 5: Hard ]    </font></span>
          <p>
             </p><font size="-1" >Please supply a zip file with the learning material for the tutorial</p></font>

              <font size="2"><b>Choose your file here: </b></font><a href="#" onclick="MM_popupMsg(\'Only .zip format will be uploaded.\rAnything else will be converted to a .zip and be unreadable.\')">
         <font size="1" style="cursor: help" color="#00CCFF"><b>(?)</b></font></a>
    <input name="zipFile" type="file" class="formFields" id="zipFile" style="border-style: none; color: white; background-color: #000; border-style: solid; border-color: white; border-width: 1px;"/><br /><br />
       <br />
                      <input name="Submit3" type="submit" onclick="MM_validateForm(\'youtube\',\'\',\'R\',\'Video_Title\',\'\',\'R\',\'VideoID\',\'\',\'R\',\'Video_Discription\',\'\',\'R\',\'Area_Of_Interest\',\'\',\'R\',\'Category\',\'\',\'R\',\'Difficulty\',\'\',\'RinRange1:5\');
           return document.MM_returnValue" value="Submit Form" /></form>
          </p>';

如果你也注意到,我在下拉列表的表单中有一个javascript。

由于某种原因,在echo的第一遍中省略了第一个表和“dropdown java”chunck。我确实加入了他们以及测试,但仍然没有。

=============================================== ================

更新:

==========

经过一些研究和游戏后,我发现了两件事。 首先,似乎php中的javascript是一些原因。可能是错的,但看起来确实如此。 (我未经训练的眼睛)

其次,我发现它适用于GoogleChroma和FireFox就好了。只有IE正在起作用。我在IE8上测试。

我希望有人可以帮助解决这个问题,或者过去曾遇到过类似的问题。

1 个答案:

答案 0 :(得分:0)

也许jQuery不正确地解释它?尝试将"html"类型添加到$.post()

function swapContent (cv) {
    $("#input").html('<img src="28.gif"/>').show();
    var url = "scripts/run.php";
    $.post(url, {contentVar: cv}, function (data) {
        $("#input").html(data).show();
    }, "html");
}

还有一种专门针对您正在做的事情的简写方法,.load()

$("#input").load("scripts/run.php?contentVar=" + cv).show();

您必须在PHP中访问$_GET['contentVar']而不是$_POST['contentVar']