我会在这个问题上给予很大的奖励,因为我认为这是一项人们真正能够利用的服务。
我最近用ASP.NET MVC/C#编写了一个脚本。它很简单——它在网页上显示用户数据库的前端。整个代码可以发布在下面,它真的不需要阅读,因为它很简单,但只是为了提供我正在做的事情的完整背景-
这是网站的主页:
@model IEnumerable<WhoIs.Models.Employee>
@{
ViewBag.Title = "Contoso Employees";
}
@section featured {
<section class="featured">
<div class="content-wrapper">
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
</hgroup>
</div>
</section>
}
<label for="filter">Enter employee details here : </label>
<input type="text" name="filter" value="" id="filter" />
<h2><strong>Users</strong> (<a href="/home/create" style="color: blue;">create new</a>)</h2>
<br />
<div style="min-height: 150px; font-size: 1.25em">
<div style="margin-bottom: .5em">
<table><thead><tr><th>Name</th><th>Branch</th><th>Phone No.</th><th>Username</th><th>Email</th></tr></thead>
<tbody>
@foreach ( var prod in Model )
{
<tr>
<td>@prod.FullName</td>
<td>@prod.Branch</td>
<td>@prod.PhoneNo</td>
<td>@prod.DomainAC</td>
<td>@prod.Email</td>
@if (User.IsInRole(@"Admins") || User.Identity.Name == prod.DomainAC) {
<td><a href="/home/edit/@prod.Id" style="color: blue;">edit</a></td>
}else{
<td>User => @User.ToString()</td>
}
<td><input type="checkbox" name="message" value="@prod.PhoneNo">Message<br></td>
</tr>
}
</tbody>
</table>
</div>
</div>
<div id="iframe2">
<br />
<iframe src="http://webaddress.com/web/login.htm" width="400" height="400" />
</div>
这将呈现一个简单的页面,其中包含Contoso的员工列表,使管理员和用户自己能够编辑他们的详细信息。在这之后,我有了一个我无法控制的远程web服务器的iframe。iframe有一些输入框,它们通过GET将值传递到PHP函数中。在上面选中复选框的地方,在我的ASP.NET/MVC中,我想将复选框的值(用户电话号码)传递到我的url/get命令中。
我该怎么做?
为了完整起见,尽管这是无法编辑的,但iframe的HTML看起来像:
echo "<body>";
echo "<form action=d.php method=get>";
echo "<input type=hidden name=u value=$u>"; <!--Username passed from previous page of iFrame-->
echo "<input type=hidden name=p value=$p>";<!--Password passed from previous page of iFrame-->
echo "<input type=text name=s value=$s>";<!--List of phone numbers-->
PHP中的PHP简化为:
$u = $_GET['u'];
$p = $_GET['p'];
$s = $_GET['s'];
因此,如果我输入一些值,URL将更改为:
http://webaddress.com/web/d.php?u=112233&p=1234&s=12345678910&m=测试
我想做的是,对于上面选中的每个复选框,都附加到&s逗号后跟所选用户所在行的电话号码。
例如,如果我的ASP.NET MVC 中有这个
Full Name Branch PhoneNo DomainAC Email Checkbox
Test1 Test1 7777777 DOMAIN'TEST1 test1@test1.com Ticked
我想跑步http://webaddress.com/web/d.php?u=112233&p=1234&s=77777777&m=测试
如果我有另一个叫"John"的用户,电话号码是121212,那么:
http://webaddress.com/web/d.php?u=112233&p=1234&s=777777771212&m=测试
这可能吗?我该怎么做?
如果我正确理解您的问题,那么您正试图操纵iframe中输入文本字段和复选框的值。
简单的答案是:
如果远程域与托管域不同,则无法直接使用javascript调用方法或访问iframe的内容文档。您可以使用跨文档消息传递,但在这种情况下不起作用,因为您无法更改远程站点的来源。
如果两者都在同一个域上,这可以通过使用javascript来实现。访问iframe文档的一个示例是:
var iframe_doc = document.getElementById('iframe_id').contentWindow.document;
从那里,您可以像往常一样使用js遍历DOM。