0

嗨,我在发布选择节点的值时遇到问题,但什么也得不到。我正在使用 dojo/request。当我使用简单的 ajax 文件进行测试时,服务器上的 getuser1.php 正在工作。

在请求行,数据值可能不正确

请指教...谢谢

以下是两个脚本:- main.php 文件-

require(["dojo/parser", "dojo/ready","dijit/form/Select",
         "dojo/request","dojo/on","dojo/domReady!"],
function(parser, ready, Select, request, on){

    ready(function(){   

        console.debug('Rendering...');
        var selectX = new Select({
            name:'select_test',
            options:[
                {label:"<span class='NotinUse'><b>&nbsp&nbsp&nbsp. . .</b></span>", value:'0', selected:true},
                {label:"<span class='inUse'><b>&nbsp&nbspPeter Griffin</b></span>", value:'1'},
                {label:"<span class='inUse'><b>&nbsp&nbspLois Griffin</b></span>", value:'2'},
                {label:"<span class='inUse'><b>&nbsp&nbspJoseph Swanson</b></span>", value:'3'},
                {label:"<span class='inUse'><b>&nbsp&nbspGlenn Quagmire</b></span>", value:'4'},
            ], 
            style:{width:'150px'}
        },"select");

        on(formNode2, 'Change', function(evt){
            evt.stopPropagation();
            evt.preventDefault();

            request.post('getuser1.php',{   
                data:{select_test:this.value},
                timeout:2000
            }).then(function(response){
                dom.byId('line2').innerHTML=response;
            });
        });
    });
});

getuser1.php 文件:-

<?php 
$q=$_GET["q"];

$con = mysql_connect('localhost', 'root', '');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("ajax_demo", $con);


$sql="SELECT * FROM user WHERE id = $q";

$result = mysql_query($sql);

// use stored function to return one result instead later. Write here after stored     procedure has been stored. 

echo "<table border='1'>
<tr>
<th width=100>Firstname</th>
<th width=100>Lastname</th>
<th width=100>Age</th>
<th width=100>Height</th>
<th width=100>Hometown</th>
<th width=100>Job</th>
</tr>";

while($row = mysql_fetch_array($result))
 {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "<td>" . $row['Age'] . "</td>";
  echo "<td>" . $row['Height'] . "</td>";
  echo "<td>" . $row['Hometown'] . "</td>";
  echo "<td>" . $row['Job'] . "</td>";
  echo "</tr>";
  }
    echo "</table>";

mysql_close($con);
?>
4

1 回答 1

0

请记住在开发时使用浏览器的错误控制台,它通常会通知您代码中的简单拼写错误等。

在这种情况下,有一些事情是错误的。看来你混淆了selectXformNode2。大概应该是:

on(selectX, 'Change', function(evt){ 

现在,如果你让它工作,你会注意到当你改变selectX' 的值时,你会在你的控制台中得到一个错误:

evt.stopPropagation is not a function

这是因为这里的 evt 参数实际上并不是一个事件对象。从选择元素中,您只能获得新值,而不是事件。把它改成这样,你应该会在控制台中看到我的意思:

on(selectX, 'Change', function( newValue ){
    console.debug('The new value is', newValue);
    //evt.stopPropagation();
    //evt.preventDefault();

我做了一些更改以使其在 jsfiddle 中工作,但它应该给你一个想法: http: //fiddle.jshell.net/AmxKv/

于 2013-02-06T14:23:23.387 回答