在铬jQuery的负载函数形式(jQuery load function form in chrom

2019-11-02 08:22发布

我有一个附加的用户按钮用户页面。 当用户点击添加按钮用户一个Ajax load()函数被调用,它加载一个adduserform在Firefox时,IE工作的。

然而,当在Chrome jQuery的对话框负荷没有错误,但表单标签不加载。

的jsfiddle与前

<form id="adduser">
    <select id="ptsiid" name="ptsiid" onchange="secondarySiteDisplay();">
        <option value=""></option>
        <option value="1666">London</option>
        <option value="1544">NYC</option>
    </select>First Name:
    <input type="text" name="firstname" value="" size="15" maxlength="60">Last Name:
    <input type="text" name="lastname" value="" size="15" maxlength="60">Job Title:
    <input type="text" name="jobtitle" value="" size="20" maxlength="40">E-mail:
    <input type="text" name="email" value="" size="40" maxlength="128">Can Login?
    <td class="data" align="left">
        <input type="checkbox" name="canlogin">
    </td>Is Deleted?
    <td class="data" align="left">
        <input type="checkbox" name="isdeleted">
    </td>Change Password?
    <td class="data" align="left">
        <input type="checkbox" name="changepassword">
    </td>
    <input class="button" type="button" value="Update" onclick="doAjaxSubmit();" accesskey="">
</form>

Answer 1:

你的问题是在这条线

jQuery('#popup').load("form.html", showDialog);  

Chrome的强制执行同源策略至极意味着你的要求将不会被加载,因为它有不同的起源不是在网页中的其他元素。

在文档jQuery的load方法也提到了这一点。

你可以找到一个域,这是一个更好的描述在这里和这里 。 这一段,从以前的链接引用,把它描述得很好,我认为。

跨站点的HTTP请求来自除发出请求的资源的域不同的域资源的HTTP请求。 例如,从域A加载的资源( HTTP://domaina.example ),例如一个HTML网页,使得对域B(资源的请求http://domainb.foo ),诸如图像,使用img元素( http://domainb.foo/image.jpg )。 这今天在网络上出现非常普遍 - 网页加载一个跨站点的方式了大量的资源,其中包括CSS样式表,图像和脚本和其他资源。

截至今天(2013年8月) ,这是在Chrome中打开的问题 。

而且,在最后,这就是为什么你的代码不能在Chrome中工作。

编辑:

下面是Chrome浏览器workarround。 它将工作,只要你不尝试加载使用文件本地文件://架构。

编辑,第二部分:

我不知道你想要做的事情,但由于form.html只包含一个表单,你可以把你的头版内。 这样,你就不必加载外部HTML。 它改变了你一直在做的事情(不加载外部页)的方式,但它在Chrome工作。 我在IE和Safari和Opera也进行了测试。 所以应该无论工作至极浏览器的决定使用。

这里有一个小提琴与工作代码。

编辑第三部分:

我认真建议更换你坚持上述方法,但...

......如果你真的需要你的内容将在一个外部页面,而你使用的东西,如PHP或.NET,你不能用ajax从服务器获取您的网页,在你的DIV张贴。 它有点复杂。 基本上你必须你服务器双面代码的方法,其服务于网页上作为局部视图。 在.NET中你会写这样的事情。

public PartialViewResult getForm()
{
   return PartialView("form.html");
}

我不熟悉PHP但是代码应该是类似的东西。 您还需要一个JavaScript函数来获取内容并把它包含div内:

function loadFrame()
{
    $.ajax({
    url: "@Url.Action("getForm","Form")",
    async: false
    }).done(function( data) {
    $("#popup").append(data);
    // we don't want to show the frame until the user has clicked on the button.
    // so we make it invisible.
    $("#popup").css("display","none"); 
    });
}


Answer 2:

以下是在您的jsfiddle缺少的东西。

1)你错过了添加的jQuery库。

2)也错过了加入jQuery用户界面

3)因为你已经在负载换你的代码,

function addeditUser() {
  jQuery('#popup').load("form.html", showDialog);  
  alert(jQuery('#popup').text());
}

这是不行的。

相反,使用这样

addeditUser = function () {
  jQuery('#popup').load("form.html", showDialog);  
  alert(jQuery('#popup').text());
}

要么

敷在头上

检查的jsfiddle



Answer 3:

这可能会帮助你试试这个

尝试在包装代码$(document).ready()

$(document).ready(function(){
   $("#getit").load("form.html #getdiv");
});


文章来源: jQuery load function form in chrome