Php 使用jqueryjson从SELECT命令填充表单

Php 使用jqueryjson从SELECT命令填充表单,php,jquery,json,Php,Jquery,Json,我原以为我教自己JQuery做得很好,但后来遇到了一个需要JSON解决的问题,现在我感觉自己又回到了尼安德特人的身份,惊奇地盯着屏幕上难以理解的形状 基本上,我正在创建一个表单,如下所示: <h2>Heroes and Heroines Site Management System - Edit a Site</h2> <p><label for="eventLocation">Event Location:</label><se

我原以为我教自己JQuery做得很好,但后来遇到了一个需要JSON解决的问题,现在我感觉自己又回到了尼安德特人的身份,惊奇地盯着屏幕上难以理解的形状

基本上,我正在创建一个表单,如下所示:

<h2>Heroes and Heroines Site Management System - Edit a Site</h2>
<p><label for="eventLocation">Event Location:</label><select name="eventLocation" id="eventLocation">
<option value="5">Buckstone</option>
<option value="18">Sandiways: Begg</option>
<option value="16">Wing Drumble Wood</option>
<option value="17" selected></option>
<option value="19" selected></option>
<option value="20">Pwll Du</option>
<option value="21" selected></option>
<option value="22">Kinver Edge</option>
<option value="23">Sandiways: Lakeview</option>
<option value="24">Gladstone</option>
<option value="25">Cannock Chase</option>
<option value="26" selected></option>
<option value="27">Consall Scout camp</option>
<option value="28">Broadwater</option>
<option value="29">Horley</option>
<option value="30">Blackwell Court</option>
<option value="31">Roddlesworth, Lancs</option>
<option value="32">Root 'n' Branch </option>
</select></p>
<form method="post" action="/heroes-and-heroines-larp-and-lrp-events.php?task=commitLocationEdit">
<p><label for="name">Location Name:</label><input type="text" name="name" id="name" class="wideText"></p>
<p><label for="address">Location Address:</label><textarea name="address" id="address" rows="6" cols="50"></textarea></p>
<p><label for="postcode">Location postcode:</label><input type="text" name="postcode"></p>
<p><label for="directions">Directions to Location:</label><textarea name="directions" rows="10" cols="50"></textarea></p>
<p><label for="locationType">Location Type:</label><select name="locationType"><option value="YHA">YHA</option>
<option value="Hostel">Hostel</option><option value="Campsite">Campsite</option>
<option value="Scout Camp (Building)">Scout Camp (Building)</option><option value="Scout Camp (Camping)">Scout Camp (Camping)</option>
<option value="8 Hour">8 Hour</option><option value="Other">Other</option>
</select></p>
<p><label for="googleMapLink">Google Map Link:</label><textarea name="googleMapLink" rows="6" cols="50" title="To get a Google Maps Link, go to www.maps.google.co.uk, find the location, and then click on the tiny gear icon in the bottom right of the screen. Click 'Share and Embed Map', choose the 'Embed Map' tab, select 'Small Map' and then copy and paste the code into this box"></textarea></p>
<p><label for="notes">Notes:</label><textarea name="notes" rows="10" cols="50"></textarea></p>
<button type="submit" class="eventBookButton">Edit Location</button>
<a href="/heroes-and-heroines-larp-and-lrp-events.php"><input type="button" class="eventBookButton" value="Cancel" /></a>
</form>
我整个下午都在和这件事作对,但还是没能取得任何进展。。。我通过Firefox开发者观看了这些查询,而该脚本并没有对PHP脚本或任何东西进行任何调用

有什么建议吗

谢谢


Seb

您当前有一组块。你真的应该尽可能多地把它们结合起来。或者,更好的是,将它们提取到外部js文件中

这里的具体问题是在$function{…}之外绑定更改处理程序;代码,这意味着它很可能试图在DOM完全加载之前运行

下面是两个脚本块的组合,应该可以解决这个问题,另外我还解决了您的ULR问题

<script>
$(function(){
    $( document ).tooltip();

    $("#eventLocation").bind("change", function(e){
        $.getJSON("/common/ajaxCalls.php?task=locationEdit&eventLocation=" + $("#eventLocation").val(),
        function(data){
            $.each(data, function(i,item){
                if (item.field == "name") {
                    $("#name").val(item.value);
                } else if (item.field == "address") {
                    $("#address").val(item.value);
                }
            });

        });
    });
});
</script>

你有没有自己测试过php脚本,看看它是否返回json数据?是的,你需要先确保php正常运行,直接点击url+GET参数。我误读了他关于它的评论,正确运行,url字符串构造不正确,您正在使用两个符号,并且“eventLocation”的no=leaving not file=value硬编码url到“/common/ajaxCalls.php?task=locationEdit&eventLocation=5”,检查以确保在实际的php页面上给出响应,然后从那里开始工作,如果代码“$.getJSON”不起作用,则需要将整个更改函数移动到$function{…};中;。在那之后你现在有了它。太好了!谢谢帕特里克Q!因此,作为将来的参考,除了错误的URL问题,我所做的错误不是将JQuery封装在$function{?$function{…};是$document.readyfunction{…}的缩写/等价物,这意味着在DOM准备好呈现后运行此函数内部的代码。如果您没有将Javascript/jQuery放入其中,那么它将在到达时立即运行,这可能是在相关DOM元素呈现之前。谢谢您!非常感谢您的帮助!我觉得我离绕J更近了一步查询:
$json = array(array('field' => 'name', 
   'value' => "test Name"), 
   array('field' => 'address', 
   'value' => "Test Address"));
echo json_encode($json);
<script>
$(function(){
    $( document ).tooltip();

    $("#eventLocation").bind("change", function(e){
        $.getJSON("/common/ajaxCalls.php?task=locationEdit&eventLocation=" + $("#eventLocation").val(),
        function(data){
            $.each(data, function(i,item){
                if (item.field == "name") {
                    $("#name").val(item.value);
                } else if (item.field == "address") {
                    $("#address").val(item.value);
                }
            });

        });
    });
});
</script>