dojo1.8-不确定如何使用dojo/request读取所选值并发布到php文件
嗨,我在获取发布的select节点的值时遇到问题,但什么也得不到。 我正在使用dojo/request。当我使用简单的ajax文件进行测试时,服务器上的getuser1.php正在工作 在请求行,数据值可能不正确 请告知。。。谢谢 以下是两个脚本:- main.php文件-dojo1.8-不确定如何使用dojo/request读取所选值并发布到php文件,php,mysql,ajax,dojo,Php,Mysql,Ajax,Dojo,嗨,我在获取发布的select节点的值时遇到问题,但什么也得不到。 我正在使用dojo/request。当我使用简单的ajax文件进行测试时,服务器上的getuser1.php正在工作 在请求行,数据值可能不正确 请告知。。。谢谢 以下是两个脚本:- main.php文件- require(["dojo/parser", "dojo/ready","dijit/form/Select", "dojo/request","dojo/on","dojo/domReady!"], f
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>   . . .</b></span>", value:'0', selected:true},
{label:"<span class='inUse'><b>  Peter Griffin</b></span>", value:'1'},
{label:"<span class='inUse'><b>  Lois Griffin</b></span>", value:'2'},
{label:"<span class='inUse'><b>  Joseph Swanson</b></span>", value:'3'},
{label:"<span class='inUse'><b>  Glenn 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;
});
});
});
});
require([“dojo/parser”、“dojo/ready”、“dijit/form/Select”,
“dojo/request”、“dojo/on”、“dojo/domReady!”],
函数(解析器、就绪、选择、请求、打开){
就绪(函数(){
调试('Rendering…');
var selectX=新选择({
名称:'select_test',
选项:[
{标签:“  …”,值:“0”,所选值:true},
{标签:“  ;格里芬”,值:'1'},
{标签:“  ;格里芬”,值:'2'},
{标签:“ ;约瑟夫·斯旺森”,值:'3'},
{标签:“ 格伦泥潭”,值:'4'},
],
样式:{宽度:'150px'}
},“选择”);
开启(formNode2,'更改',功能(evt){
evt.stopPropagation();
evt.preventDefault();
request.post('getuser1.php',{
数据:{select_test:this.value},
超时:2000
}).然后(功能(响应){
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);
?>
记得在开发时使用浏览器的错误控制台,它通常会通知您代码中的简单输入错误等 在这种情况下,有一些事情是错误的。您似乎混淆了
selectX
和formNode2
。应该是:
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();
我做了一些更改,使其在JSFIDLE中工作,但它应该给您一个想法:您好,谢谢,但是,我无法生成输出。如果不使用该开关,我可以插入“data:{q:2}”,正如您在getuser1.php中看到的“$q=$\u GET[“q”];”。那么有什么不对呢?请告知。谢谢你advance@user1739825您需要确定您的PHP脚本还是Javascript是问题所在。1) Javascript是否向服务器发出请求(使用firebug检查)?2) 发生这种情况时,服务器的响应是什么(请与firebug联系)?3) 是否调用了
函数(响应){…}
函数?(在那里放一个console.debug语句并与firebug进行检查。)您的问题非常广泛——正如我指出的,您粘贴的代码中有几个错误。你需要自己努力找出问题所在。如果我用console.debug(responses)输入“data('q':2)”,结果是:-Firstname Lastname Age。我可以看到“request.post”可以调用getuser1.php,但似乎无法处理php脚本。我注意到main.php中的“Post”和getuser1.php中的“Get”。我将更改以获取这两个文件。但它仍然不起作用