菜鸟教程小白 发表于 2022-12-13 07:35:53

javascript - 网站工作,但不是在 iphone 上。 XMLHttpRequest() 错误


                                            <p><p>我已经创建了这个网站</p>

<p> <a href="http://www.tylertracy.com/testing/Xml/App%20veiwer%205-28.php" rel="noreferrer noopener nofollow">http://www.tylertracy.com/testing/Xml/App%20veiwer%205-28.php</a> </p>

<p>它在大多数浏览器和 iPhone 模拟器上都能正常工作,但在真正的 iPhone 上却不行。我已将其范围缩小到 XMLHttpRequest()。似乎当我获取 xml 时,我无法读取它返回未定义的 的子级。这很莫名其妙我不明白。</p>

<p>这是我获取 XML 的代码</p>

<pre><code>function convertXml (path) {
    if (window.XMLHttpRequest){
      xmlhttp=new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
    }else{
      xmlhttp=new ActiveXObject(&#34;Microsoft.XMLHTTP&#34;); // code for IE6, IE5
    }
    xmlhttp.open(&#34;GET&#34;,path,false);
    xmlhttp.send();
    xml=xmlhttp.responseXML.getElementsByTagName(&#34;app&#34;);
    var foo = [];
    for (var i = 0; i &lt;= xml.length-1; i++) {
      foo = {};
      for (var j = 0; j &lt;=xml.children.length-1; j++) { // get all children of the app and make it a part in the object
            foo.children.tagName] = xml.children.innerHTML.trim();//super complicated
      }
   }
    return foo;
}
</code></pre>

<p>经过多次试验,我发现在 iPhone 上请求返回 而计算机返回 。我不知道这意味着什么,但我觉得这是我的问题所在。有没有办法在这些之间进行转换? </p>

<p>从那以后,我将代码更新为 jQuery,看看问题是否仍然存在,确实如此。 </p>

<p>这是新的 jQuery</p>

<pre><code>function getXML (path) {
//gets text version of the xml doc
var response = $.ajax({ type: &#34;GET&#34;,   
                  url: &#34;testingXml.xml&#34;,   
                  async: false,
                  }).responseText;
//converts text into xmlDoc
parser=new DOMParser();
xmlDoc=parser.parseFromString(response,&#34;text/xml&#34;);
return xmlDoc;
}

function xmlToObject (x) {
var xml = x.getElementsByTagName(&#34;app&#34;); //get all the xml from the root
var foo = [];
for (var i = 0; i &lt;= xml.length-1; i++) {
    foo = {}; // make the object
    for (var j = 0; j &lt;=xml.children.length-1; j++) { //get all of the children of the main tag
      foo.children.tagName] = xml.children.innerHTML.trim();//super complicated
    }
}
return foo;
}
</code></pre>

<p>然后要获取数组,您将编写以下代码 <code>xmlToObject(getXML("testingXml.xml"))</code></p>

<p>问题仍然存在,在计算机上很好,但在 iPhone(Google、Safari、Firefox、Oprah)上似乎 xml 没有显示。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我来了</p>

<blockquote>
<p>Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user&#39;s experience. For more help, check <a href="http://xhr.spec.whatwg.org/" rel="noreferrer noopener nofollow">http://xhr.spec.whatwg.org/</a></p>
</blockquote>

<p>打开页面时在 Google Chrome 控制台中。这可能是它无法在 iOS 上加载的原因:Apple 决定忽略移动设备上的此类请求,而不是仅仅记录警告,以防止浏览器卡住。</p>

<p>试试</p>

<pre><code>xmlhttp.open(&#34;GET&#34;,path,true);
</code></pre>

<p>和一个 <code>xhr.onload</code> 处理程序,如 <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests" rel="noreferrer noopener nofollow">MDN&#39;s &#34;Synchronous and asynchronous requests&#34;</a> 中所述.</p></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - 网站工作,但不是在 iphone 上。 XMLHttpRequest() 错误,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/30551373/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/30551373/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - 网站工作,但不是在 iphone 上。 XMLHttpRequest() 错误