Переменная jscript в запросе - PullRequest
0 голосов
/ 24 марта 2010

Может быть, очень простой вопрос.

Как я могу вставить этот код

<Query>
   <Where>
      <Eq>
         <FieldRef Name="Judge_x0020_1" />
         <Value Type="Text">mr. R. Sanches</Value>
      </Eq>
   </Where>
</Query>

Переменная из jscript в области кода, где mr. Р. Санчес написано. Так что мой jScript содержит динамическую текстовую переменную, которую я хочу заменить mr. Р. Санчес с. Посмотрите, где там написано «JAVESCRIPT VAR»:

код jScript, который у меня есть

<script src="/JavascriptMODS/jPointLoader.js"></script>
<script src="/JavascriptMODS/jPoint.userprofile.js"></script>
<SCRIPT type=text/javascript>
            // Picks the userfield it is going to search with
            var user = jP.getUserProfile();
            var userinfspvalue = user.Department;

            // removes the non breaking space at the end of the departmentfieldcontent
            var removenonbreakingspace = String.fromCharCode(160);
            userinfspvalue = userinfspvalue.replace(removenonbreakingspace,'');
</script>

Userinfspvalue - это переменная, которую я хотел бы использовать.

В запросе CAML

<Query>
   <Where>
      <Eq>
         <FieldRef Name="Judge_x0020_1" />
         <Value Type="Text">Userinfspvalue</Value>
      </Eq>
   </Where>
</Query>

Что такое jP.getUserProfile ()?

Код (я его не создавал).

/*
* name: jPoint.userprofile.js
* purpose: get user profile info from /_layouts/userdisp.aspx
* input: none
* visibility: public
* return: jP.UserProfile (object)
*   jP.UserProfile.Name
*   jP.UserProfile.Account
*   jP.UserProfile.Title
*   jP.UserProfile.EMail
*   jP.UserProfile.Notes
*   jP.UserProfile.AboutMe
*   jP.UserProfile.Picture
*   jP.UserProfile.Department
*   jP.UserProfile.JobTitle
*   jP.UserProfile.SipAddress
*   jP.UserProfile.SIPAddress
*
*   jP.UserProfile.FieldCount   //count of fields
*   jP.UserProfile.Fields       //array of field names
*   jP.UserProfile.Items[0].Name ... SipAddress
*
* use example: 
*   var usrprof = jP.getUserProfile(userID); //userID is optional 
*   var name = usrprof.Name; 
*   var email = usrprof.EMail;
*   var dept = usrprof.Department;
*/
(function(jP) {
    jP.getUserProfile = function (UserID) {
        var ProfileURL = jP.SiteURL+"/_layouts/userdisp.aspx";
        if(typeof UserID !== "undefined")
            ProfileURL = ProfileURL + "?ID=" + UserID;
        $.ajax( {
            type: "GET",    //jQuery ajax GET
            async: false,
            cache: false,
            url: ProfileURL, //userprofile url
            success: function(data){
                var tags = $(data).find("h3 > a");  //look for anchor in h3 tag
                if (tags.length > 0) {
                    var profile = {};
                    var fields = [];
                    var item = {};
                    $.each(tags, function(){
                        var name = this.name;   //name attritbute
                        var td = $(data).find("tr a[name='"+name+"']").parent().parent();  //get label td
                        var labelname = jP.strip(td.text());  //get label text as field name
                        if (labelname == "Picture") {
                            //special handling for Picture field
                            //concat attribute alt and src together
                            var img = td.siblings().find("img");
                            var val = img.attr("alt") + ";#" + img.attr("src");
                        }
                        else {
                            //get text of next td cell
                            var val = $.trim(td.siblings().text());
                        }
                        var intname = name.substr(name.indexOf("_")+1); //internal field name
                        if ($.inArray(intname, fields)==-1) {  //save as internal fieldname
                            fields.push(intname);
                            item[intname] = profile[intname] = val;
                        }
                        if ($.inArray(labelname, fields)==-1) { //save as label fieldname
                            fields.push(labelname);
                            item[labelname] = profile[labelname] = val;
                        }
                    });
                    //Set profile obj
                    profile["Fields"] = fields;
                    profile["FieldCount"] = fields.length;
                    profile["Items"] = [item];
                    //set UserProfile obj
                    jP["UserProfile"] = profile;
                }   
            }
        });
        return (jP["UserProfile"])
    }
})(jPoint);

Ответы [ 2 ]

1 голос
/ 27 марта 2010

Итак, несколько вещей. Это является клиентской стороной; браузер выполняет этот JScript (и поэтому я предпочитаю ссылаться на него как на JavaScript ... хороший вызов - пометить его)

Вы используете библиотеку JavaScript с именем jPoint ... но вы пытаетесь манипулировать запросом CAML.

JPoint практикует то, что называется Сокрытие информации , предоставляя вам такие функции, как getUserProfile(), но, как правило, у меня нет впечатления, что вы можете манипулировать CAML. На самом деле, судя по тому, что я вижу в реализации и по тому, что я читаю на их веб-сайте, я думаю, что это даже не CAML-запрос, а просто скриншот HTML-кода со страниц профиля.

Итак, в общем, я не думаю, что вы вообще пытаетесь манипулировать CAML, а скорее должен найти подходящую функцию jPoint для использования. Если у jPoint его нет, вам придется отказаться от него и использовать более традиционное решение.

Почему вы используете jPoint вместо чего-то более традиционного или серверного?

0 голосов
/ 24 марта 2010

Попробуйте

var type = document.getElementById("testd"); // remember put your things in a div or equal

type.getAttribute('Type').value = "THE JAVASCRIPT VAR";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...