我将在这个问题上投入大笔资金,因为这是我认为人们真正能够利用的服务。
我最近使用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-->
d.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=test
我想要做的是,对于上面选择的每个复选框,附加一个逗号,后跟所选用户的行的电话号码。
所以,例如,如果我在我的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=7777777&m=test
如果我有另一个名为“John”的用户,电话号码是121212,那么:
http://webaddress.com/web/d.php?u=112233&p=1234&s=7777777,121212&m=test
这可能吗?我怎样才能做到这一点 ?
答案 0 :(得分:1)
如果我正确理解您的问题,您正试图操纵iframe中输入文本字段和复选框的值。
简单的答案是:
如果远程域与您的托管域不同,则无法直接使用javascript调用方法或访问iframe的内容文档。您可以使用跨文档消息传递,但由于无法更改远程站点的源,因此无法在此方案中使用。
如果两者都在同一个域中,则可以使用javascript来完成。访问iframe文档的一个示例是:
var iframe_doc = document.getElementById('iframe_id').contentWindow.document;
从那里你可以像往常那样使用js横向DOM。